r - 在 R (perl) 上使用正则表达式在向量中查找符合条件的单词

标签 r regex

我想查找向量中包含单词“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/

相关文章:

python - 帮助更正现有正则表达式以替换字符串值

regex - 在Notepad++中,如何找到字符串的第n个出现位置

r - 如何将 Rd 文件转换为我在 R 中创建的包的 pdf?

R:收集重复的列

r - 如何给ctree(包方)的终端节点添加标签?

r - 在侧边栏菜单项之一上方添加空间

R 在 purrr::map 中使用 dplyr::mutate() 而不复制行

regex - 使用 bash 和 awk 将日志文件分组

regex - 在文本文件中按列对唯一元素进行排序

regex - 如何让 Spark session 递归读取所有文件?