我想查找向量中包含单词“RT”或“R”的行,但如果单词“RT”前面有“no”,则不会。
单词 RT 前面可以没有任何内容、空格、点等。 使用正则表达式,我尝试过:
grep("(?<=[no] )RT", aaa,ignore.case = FALSE, perl = T)
这给了我所有带有“no RT”的行。
和
grep("(?=[^no].*)RT",aaa , perl = T)
这给了我所有包含“RT”的行,开头有或没有“no”。
我的错误是什么?我认为 ^
给出了除了它后面的字符之外的所有内容。
示例:
aaa = c("RT alone", "no RT", "CT/RT", "adj.RTx", "RT/CT", "lang, RT+","npo RT" )
最佳答案
(?<=[no] )RT
匹配任何 RT
紧接在 "n "
之前或"o "
.
你应该使用否定的lookbehind,
"(?<!no )RT"
请参阅regex demo .
或者,如果您需要检查整个单词 no
,
"(?<!\\bno )RT"
参见this regex demo .
在这里,(?<!no )
确保没有no
紧邻当前位置的左侧,然后才 RT
已被消耗。
关于r - 在 R (perl) 上使用正则表达式在向量中查找符合条件的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52093638/