在R中使用regexpr,具有多个字符串肯定和否定

时间:2013-03-29 23:38:39

标签: regex r perl

我正在看一栏笔记。寻找一些字符串的存在和其他人的缺席。表达式看起来像

toMatch <- c("words", "i", "want", "to")
notToMatch <- c("not", "in", "my", "res")
insert <- paste(paste(toMatch, collapse="|"), "!", paste(notToMatch, collapse="!"), sep="")
regexpr(insert, df$notes, ignore.case=T)

在我看来,regexpr会计算

printNotes = +1 presence and -1 absence

如果该表达式的计算结果为printNotes&gt; 0,它返回一个非-1的值(在regexpr中表示未找到)。

regexpr的任何建议语法,如果任何notToMatch“!”则返回-1参数返回TRUE?

非常感谢!

1 个答案:

答案 0 :(得分:2)

您可以使用grepl()获取字符串匹配位置的逻辑向量,然后使用sum()该向量来查看匹配的数字。您可以(大致)使用grep()执行相同的操作并计算结果向量的长度,但grepl()的行为更一致。

如果你想获得任何匹配的倒数,你可以!grepl("match", x),它将显示逻辑逆。

如果您*特别希望它返回TRUE!,您可以执行类似ifelse(grepl("m", letters), TRUE, "!")搜索letters常量(所有26个小写英文字母)的内容对于“m”并在匹配时返回TRUE并且“!”如果没有匹配。