在R中使用str_detect匹配指定字符串至少出现2次的实现方法
解决方案
以下基于R语言stringr包的str_detect函数实现,配套示例数据如下:
library(stringr) find.variable <- c("detect me a string detect", "detect string", "string", "detect detect", "detectdetect")
1 基础匹配需求(含连写场景)
正则规则匹配任意位置出现至少2次detect子串即可,无需判断是否为独立单词:
str_detect(find.variable, "detect.*detect")
输出结果完全符合预期:
[1] TRUE FALSE FALSE TRUE TRUE
规则说明:正则中的.*匹配0个或多个任意字符,只要字符串中存在两处detect子串,不管中间有没有其他内容、是否连写都会命中。
2 进阶匹配需求(仅独立单词计入)
在正则中添加单词边界符\\b限制detect必须作为独立单词出现:
str_detect(find.variable, "\\bdetect\\b.*\\bdetect\\b")
输出结果完全符合预期:
[1] TRUE FALSE FALSE TRUE FALSE
规则说明:\\b匹配单词边界(单词与非单词字符的分界点,包括字符串首尾、空格、标点等位置),连写的detectdetect中两个子串之间没有单词边界,不会被判定为两次独立出现。
内容的提问来源于stack exchange,提问作者rightmove27
相关产品推荐
相关产品推荐

