grep完全匹配,不包括某些条款

时间:2015-05-14 11:57:54

标签: regex r grep

帮助升值。我在一个向量中有一长串列名,其中的模式是这样的:

cols <-c('a35-male-x1','a35-female-x2','a16-male-t0','a65-female-t7',...)

我尝试使用grep查找“男性”匹配的列,但不包括女性。

grep(pattern='male',cols)

将获得所有4个条目。有没有一种简单的方法可以在grep中完成这项工作?或者使用其他功能更好的方法? 提前致谢,p。

4 个答案:

答案 0 :(得分:3)

您可以使用字边界\\b来匹配“男性”

grep('\\bmale\\b', cols, value=TRUE)
#[1] "a35-male-x1" "a16-male-t0"

对于此示例,

grep('-male-', cols)
#[1] 1 3

也可以使用

数据

 cols <-c('a35-male-x1','a35-female-x2','a16-male-t0','a65-female-t7')

答案 1 :(得分:2)

另一种选择(考虑到您只有malefemale):

Filter(function(u) !grepl('female',u), cols)
#[1] "a35-male-x1" "a16-male-t0"

或者简单地说:

cols[!grepl('female',cols)]

答案 2 :(得分:2)

(?<!fe)male

您可以使用with perl=True选项获得您想要的内容

答案 3 :(得分:0)

这是另一种方法

grep("[^female][male]", cols, value = TRUE)
#[1] "a35-male-x1" "a16-male-t0"