【发布时间】:2019-04-30 16:52:42
【问题描述】:
我试图检测某个字符串的所有出现,该字符串没有被某些字符串包围(使用正则表达式环视)。例如。所有出现的“非洲”,但不是“南非社会”。请参阅下面的简化示例。
#My example text:
text <- c("South African Society", "South African",
"African Society", "South African Society and African Society")
#My code examples:
str_detect(text, "(?<!South )African(?! Society)")
#or
grepl("(?<!South )African(?! Society)", perl=TRUE , text)
#I need:
[1] FALSE TRUE TRUE TRUE
#instead of:
[1] FALSE FALSE FALSE FALSE
问题似乎是正则表达式单独而不是整体评估后向和前瞻。它应该需要两个条件,而不仅仅是一个。
【问题讨论】:
-
您可以使用:
^(?!South African Society$).*\bAfrican\b
标签: r regex regex-lookarounds lookahead lookbehind