如何使用grepl在R中为搜索查询添加例外

时间:2016-03-23 15:54:02

标签: regex r

我有一个由不同组名组成的变量,负责恐怖事件(观察)。

我想排除所有观察,其中此变量包括“共产主义”一词,例如排除所有groupname =“孟加拉共产党”等的情况。这是我的代码:

newdata <- olddata[!grepl("Communist", olddata$groupname),]

但我想在此规则中添加一个例外:所有“反共”组织都应保留在数据框架中。所以代码应该删除“孟加拉共产党”,但留下例如“反共叛乱分子”。

我使用正则表达式吗?或者有没有办法为这种模式匹配添加一个例外?我想最后看起来应该是这样的:

newdata <- olddata[!grepl("Communist"[but exclude "Anti-Communist"], olddata&groupname),]

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用negative look behind

x <- c("Bangladesh Communist Party", "Anti-Communist Rebels")
!grepl("(?<!Anti-)Communist", x,  perl = TRUE)
# [1] FALSE  TRUE