请考虑以下示例:
> testLines <- c("I don't want to match this","This is what I want to match")
> grepl('is',testLines)
> [1] TRUE TRUE
Run Code Online (Sandbox Code Playgroud)
但是,我想要的只是匹配'是',当它单独作为一个单词时.从阅读一些perl文档来看,似乎这样做的方法是使用\ b,一个锚点,可用于识别模式前后的内容,即\ bword\b匹配'word'但不匹配'sword ".所以我尝试了以下示例,使用Perl语法设置为'TRUE':
> grepl('\bis\b',testLines,perl=TRUE)
> [1] FALSE FALSE
Run Code Online (Sandbox Code Playgroud)
我正在寻找的输出是FALSE TRUE.
Tom*_*mmy 30
"\ <"是单词开头的另一个转义序列,"\>"是结尾.在R字符串中,您需要加倍反斜杠,因此:
> grepl("\\<is\\>", c("this", "who is it?", "is it?", "it is!", "iso"))
[1] FALSE TRUE TRUE TRUE FALSE
Run Code Online (Sandbox Code Playgroud)
请注意,这匹配"是!" 但不是"iso".
koh*_*ske 19
你需要双重转义才能将转义传递给正则表达式:
> grepl("\\bis\\b",testLines)
[1] FALSE TRUE
Run Code Online (Sandbox Code Playgroud)
非常简单,匹配领先的空间:
testLines <- c("I don't want to match this","This is what I want to match")
grepl(' is',testLines)
[1] FALSE TRUE
Run Code Online (Sandbox Code Playgroud)
对正则表达式来说,还有很多东西,但基本上这个模式需要更具体.在更一般的情况下,您需要的是一个很大的主题.看?正则表达式
适用于此示例的其他可能性:
grepl(' is ',testLines)
[1] FALSE TRUE
grepl('\\sis',testLines)
[1] FALSE TRUE
grepl('\\sis\\s',testLines)
[1] FALSE TRUE
Run Code Online (Sandbox Code Playgroud)