R语言 正则表达式

string <- c("Hiphopopotamus","Rhymenoceros","time for bottomless lyrics")
pattern <- "t.m"

#分割字符串
strsplit(string,pattern)#按关键词分割字符串
stringr::str_split(string,pattern)

#定位关键字
regexpr(pattern,string)#返回每个字符串第一次匹配关键词的位置和长度
gregexpr(pattern,string)#返回全部匹配的位置和长度,无匹配则填-1
stringr::str_locate(string,pattern)#返回第一次匹配关键词的首尾位置(好用)
stringr::str_locate_all(string,pattern)#返回全部匹配的首尾位置(好用)

#检测关键词
grep(pattern,string)#关键词匹配哪几个字符串
grep(pattern,string,value=T)#返回包含关键词的字符串
grepl(pattern,string)#判断关键词与字符串是否匹配
stringr::str_detect(string,pattern)

#提取关键词
regmatches(string,regexpr(pattern,string))
regmatches(string,gregexpr(pattern,string))
stringr::str_extract(string,pattern)
stringr::str_extract_all(string,pattern)
stringr::str_extract_all(string,pattern,simplify=T)
stringr::str_match(string,pattern)
stringr::str_match_all(string,pattern)

#关键词替换
sub(pattern,"*",string)
gsub(pattern,"*",string)
stringr::str_replace(string,pattern,"*")
stringr::str_replace_all(string,pattern,"*")

参考:

https://mp.weixin.qq.com/s/be2Dz-gyocp9Cbm5dkoQuQ

在这里插入图片描述

https://www.math.pku.edu.cn/teachers/lidf/course/fts/ftsnotes/html/_ftsnotes/fts-ltscases-gas.html#

#https://faculty.chicagobooth.edu/-/media/faculty/ruey-s-tsay/teaching/introts/w-petroprice.txt
la <- readLines("E:/w-petroprice.txt")

#https://www.jianshu.com/p/11bbfa8e98c5
la <- gsub("\\s+", " ", la)
la <- gsub("^\\s+|\\s$", "", la)

c(
  head(la),
  tail(la)
)

da1 <- readr::read_table2(
  paste(la, collapse="\n")
  )

http://www.mathsccnu.com/forum.php?mod=viewthread&tid=5162&extra=page%3d1

#https://www.jianshu.com/p/b3f70d96455f
#https://blog.csdn.net/lztttao/article/details/82086346
#https://www.jianshu.com/p/11bbfa8e98c5

string <- c("1554","4456","1552465")
pattern <- "[^5]" # 不为5的元素
stringr::str_locate(string,pattern) # 首次出现在字符串的哪个位置
stringr::str_locate_all(string,pattern) # 出现在字符串的哪个位置
sub(pattern,"",string) # 替换第一个不为5的元素
gsub(pattern,"",string) # 替换所有不为5的元素(只保留元素5)

pattern <- "5" # 效果与单个匹配"[5]"相同
stringr::str_locate(string,pattern) # 查找元素5
stringr::str_locate_all(string,pattern)
sub(pattern,"",string) # 删除元素5
gsub(pattern,"",string)
x <- "a1;bb12; ccc123;dddd1234;eeeee12345;ffffff123456;ggggggg1234567"

gsub("\\d","_",x) #所有数字均被单独替换,一次匹配1个字符
gsub("\\d+","_",x) #所有数字均被整体替换,一次匹配1个以上字符
gsub("\\d ","_",x) #匹配无效
gsub("\\d{3}","_",x) #一次匹配3个字符
gsub("\\d{3,}","_",x) #一次匹配3个以上字符
gsub("\\d{3,5}","_",x) #一次匹配3到5个字符
gsub("\\d?","_",x) #所有数字均被单独替换,一次匹配1个以下字符(处理词首)
gsub("\\d*","_",x) #所有数字均被整体替换,一次匹配0个以上字符(处理词首)
你好!关于学习R语言正则表达式,我可以为您提供一些建议和资源。首先,了解正则表达式的基本概念是很重要的。正则表达式是一种用于匹配和操作文本的强大工具,可以帮助您在R语言中进行字符串处理和模式匹配。 以下是一些学习R语言正则表达式的步骤和资源: 1. 学习正则表达式基础知识:了解正则表达式的基本语法、元字符和常见模式,如字符类、量词、位置限定符等。可以查阅教程、博客文章或在线资源来学习这些概念。 2. 使用R中的正则表达式函数:R语言提供了许多内置的正则表达式函数,如`grep()`、`grepl()`、`gsub()`等。了解这些函数的用法和参数,并尝试在实际数据中应用它们。 3. 练习和实践:通过解决实际问题来加深对正则表达式的理解。可以尝试编写一些简单的模式匹配任务,如提取特定模式的字符串、替换特定模式等。 4. 学习常见的正则表达式技巧:掌握一些常见的正则表达式技巧,如使用分组、捕获组、反向引用等。这些技巧可以帮助您更高效地处理复杂的模式匹配任务。 5. 利用在线工具和练习平台:有一些在线工具和练习平台可以帮助您练习和测试正则表达式。如Regex101、Regexr等,它们提供了实时反馈和测试环境,可以帮助您验证和调试自己的正则表达式模式。 最后,我还可以推荐一些学习资源供您参考: - R语言正则表达式官方文档:https://stat.ethz.ch/R-manual/R-devel/library/base/html/regex.html - R语言字符串处理教程:https://www.r-bloggers.com/2012/06/r-string-processing/ - "Mastering Regular Expressions"(《精通正则表达式》)一书,由Jeffrey E. F. Friedl撰写。 祝您学习顺利!如果您有任何进一步的问题,请随时问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值