R grep与正则表达式

时间:2014-05-12 13:57:48

标签: regex r grep

我正在尝试将所有适当的数据框列定义为因子,而我所包含的内容包括什么不是(通过ngrams列表,请参见下面的代码片段)一个因素:

data.clean[,names(data.clean)[grep("^[^time]*[^tot]*[^count]*[^score]*[^include]*[^has]*[^__fe]*$", 
            names(data.clean))]] 
<- as.factor(as.character(data.clean[,names(data.clean)[grep("^[^time]*[^tot]*[^count]*[^score]*[^include]*[^has]*[^__fe]*$", 
                                      names(data.clean))]]))

但它似乎没有做到这一点。 有什么建议吗? 感谢

1 个答案:

答案 0 :(得分:0)

这:

grep("^[^time]*[^tot]*[^count]*[^score]*[^include]*[^has]*[^__fe]*$", names(data.clean))

没有做你认为它正在做的事情。 [^ time] *将匹配任何地方不包含't','i','m'或'e'的任何字符序列。因此,完整的表达式是与任何补充的字符类匹配的任何内容。例如,abbbccdde将匹配该表达式。

我认为你真正想要的是:

grep("^(time|tot|count|score|include|has|__fe)$", names(data.clean), invert=TRUE)

此模式将与指定的ngrams完全匹配,而invert = TRUE将返回匹配的补码,即所有与指定的ngrams不匹配的单词。

相关问题