加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

R正则表达式找到两个单词相同的字符串,顺序和距离可能会有所不同

发布时间:2020-12-14 06:07:54 所属栏目:百科 来源:网络整理
导读:我想创建一个单一的正则表达式(如果可能的话)来搜索字符串并确定两个单词是否出现在同一个字符串中.我知道我可以使用两个grepl语句(如下所示),但我想使用单个正则表达式来测试这种情况.正则表达式越有效越好. 我想找到包含“man”和“dog”不区分大小写的字
我想创建一个单一的正则表达式(如果可能的话)来搜索字符串并确定两个单词是否出现在同一个字符串中.我知道我可以使用两个grepl语句(如下所示),但我想使用单个正则表达式来测试这种情况.正则表达式越有效越好.

我想找到包含“man”和“dog”不区分大小写的字符串.

x <- c(
    "The dog and the man play in the park.","The man plays with the dog.","That is the man's hat.","Man I love that dog!","I'm dog tired"
)

## this works but I want a single regex
grepl("dog",x,ignore.case=TRUE)  & grepl("man",ignore.case=TRUE)

解决方法

使用正则表达式交替运算符|.

grepl(".*(dog.*man|man.*dog).*",ignore.case=TRUE)

必要时使用单词边界..

grepl(".*(bdogb.*bmanb|bmanb.*bdogb).*",ignore.case=TRUE)

无需领先和尾随.*

grepl("(dog.*man|man.*dog)",ignore.case=TRUE)

您可以在正则表达式本身中提供不区分大小写的修饰符.

grepl("(?i)(dog.*man|man.*dog)",x)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读