1

嗨,我有一些日期格式字符串,我想使用正则表达式(在 R 中)找出那些不以“ 2012 ”开头的字符串。我试过grep("^[^2012]",dataset)了,但没有用。而且我也试过grep("^[^2][^0][^1][^2]",dataset)了,还是不行。这个问题的模式是什么?您的帮助将不胜感激。

4

3 回答 3

4

您可以!在前面使用grepl

 x[ !grepl("^2012", x) ]

grep("^[^2012] , ...)将拒绝以任何这些数字开头的任何值。(我不确定为什么第二个不起作用。)Gustav 的建议仅在您指定 perl=TRUE 时才有效:

x[ grep("^(?!2012)", x, perl=TRUE) ]
于 2013-08-08T02:50:33.087 回答
3

不确定 R 的正则表达式是否支持这一点,但通常你可以这样做:

"^(?!2012)"
于 2013-08-08T02:54:59.520 回答
3

grep也有一个invert=TRUE选择:

x <- c("2012out", "2include")
grep("^2012",x,invert=TRUE)
#[1] 2

grep("^2012",x,invert=TRUE,value=TRUE)
#[1] "2include"
于 2013-08-08T03:20:10.660 回答