将 PCRE 正则表达式与环视结合使用:
grep("(?<![A-Z])MOUSE(?![A-Z])", targettext, perl=TRUE)
See the 正则表达式演示 http://(?%3C!%5BA-Z%5D)MOUSE(?!%5BA-Z%5D)
The (?<![A-Z])
如果单词前面有大写 ASCII 字母和负向前视,则负向后视将使匹配失败(?![A-Z])
如果该单词后跟大写 ASCII 字母,则匹配失败。
要将环视应用于您拥有的所有替代方案,请使用外部分组(?:...|...)
.
See the R在线演示 https://ideone.com/cdOUse:
> targettext <- c("DOG MOUSE CAT","DOG MOUSE:CAT","DOG_MOUSE9CAT","MOUSE9CAT","DOG_MOUSE")
> searchwords <- c("MOUSE","FROG")
> grep(paste0("(?<![A-Z])(?:", paste(searchwords, collapse = "|"), ")(?![A-Z])"), targettext, perl=TRUE)
[1] 1 2 3 4 5