Regex 检查特定字符串是否出现在R中的另一个字符串中
我想看看某个特定的单词是否出现在列中。它可以是任何大小写,也可以是开头、结尾或中间。我该怎么做呢?我试着查看正则表达式和grep(),但是我被卡住了 例如,下面我有一个values列和一个指定的响应。我想查一下“狗”这个词。如果发现“dog”有任何尾随的词干,如“dogg”或“doggy”,我想要一个“1”,但如果“dog”前面有其他词干,我不想要一个“1”Regex 检查特定字符串是否出现在R中的另一个字符串中,regex,r,Regex,R,我想看看某个特定的单词是否出现在列中。它可以是任何大小写,也可以是开头、结尾或中间。我该怎么做呢?我试着查看正则表达式和grep(),但是我被卡住了 例如,下面我有一个values列和一个指定的响应。我想查一下“狗”这个词。如果发现“dog”有任何尾随的词干,如“dogg”或“doggy”,我想要一个“1”,但如果“dog”前面有其他词干,我不想要一个“1” mydf = structure(list(values = structure(c(7L, 4L, 1L, 2L, 3L
mydf = structure(list(values = structure(c(7L, 4L, 1L, 2L, 3L, 9L, 8L,
5L, 6L), .Label = c("1 dog", "2 dog 3", "cats and dogs", "dog",
"DOG", "DOGG", "doggy", "no notthisdog", "not a valid value"), class = "factor"),
result = c(1, 1, 1, 1, 1, 0, 0, 1, 1)), .Names = c("values",
"result"), row.names = c(NA, -9L), class = "data.frame")
或者,如果需要值本身:
grep(value=T,'\\bdog',mydf$values,ignore.case=T);
## [1] "doggy" "dog" "1 dog" "2 dog 3" "cats and dogs" "DOG" "DOGG"
或者,如果需要值本身:
grep(value=T,'\\bdog',mydf$values,ignore.case=T);
## [1] "doggy" "dog" "1 dog" "2 dog 3" "cats and dogs" "DOG" "DOGG"
正则表达式
\b
匹配单词边界(单词的开头或结尾,非捕获),因此\bdog
(不区分大小写,转义)匹配单词开头的“dog”。如果你想要更多的用例,你需要指定它们
mfdf$regex <- as.numeric(grepl("\\bdog", mydf$values, ignore.case=TRUE))
mydf
## values result regex
## 1 doggy 1 1
## 2 dog 1 1
## 3 1 dog 1 1
## 4 2 dog 3 1 1
## 5 cats and dogs 1 1
## 6 not a valid value 0 0
## 7 no notthisdog 0 0
## 8 DOG 1 1
## 9 DOGG 1 1
mfdf$regexregex\b
匹配单词边界(单词的开头或结尾,非捕获),因此\bdog
(不区分大小写,转义)匹配单词开头的“dog”。如果你想要更多的用例,你需要指定它们
mfdf$regex <- as.numeric(grepl("\\bdog", mydf$values, ignore.case=TRUE))
mydf
## values result regex
## 1 doggy 1 1
## 2 dog 1 1
## 3 1 dog 1 1
## 4 2 dog 3 1 1
## 5 cats and dogs 1 1
## 6 not a valid value 0 0
## 7 no notthisdog 0 0
## 8 DOG 1 1
## 9 DOGG 1 1
mfdf$regex