在 R 中反转正则表达式

Rob*_*hrs 4 regex r stringr

我有这个字符串:

[1] "19980213"    "19980214"    "19980215"    "19980216"    "19980217"    "iffi"        "geometry"   
[8] "date_consid"
Run Code Online (Sandbox Code Playgroud)

我想匹配所有不是日期而不是“date_consid”的元素。我试过

res =  grep("(?!\\d{8})|(?!date_consid)", vec, value=T)
Run Code Online (Sandbox Code Playgroud)

但我就是不能让它工作......

Wik*_*żew 5

您可以使用

vec <- c("19980213", "19980214", "19980215", "19980216","19980217", "iffi","geometry", "date_consid")
grep("^(\\d{8}|date_consid)$", vec, value=TRUE, invert=TRUE)
## => [1] "iffi"     "geometry"
Run Code Online (Sandbox Code Playgroud)

查看R 演示

^(\d{8}|date_consid)$正则表达式的字符串只包含任何八位或等于匹配date_consid

value=TRUE品牌grep的返回值,而不是指数和invert=TRUE逆正则表达式匹配结果(回报那些不匹配)。