Regex 检查特定字符串是否出现在R中的另一个字符串中

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

我想看看某个特定的单词是否出现在列中。它可以是任何大小写,也可以是开头、结尾或中间。我该怎么做呢?我试着查看正则表达式和grep(),但是我被卡住了

例如,下面我有一个values列和一个指定的响应。我想查一下“狗”这个词。如果发现“dog”有任何尾随的词干,如“dogg”或“doggy”,我想要一个“1”,但如果“dog”前面有其他词干,我不想要一个“1”

        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