在R中反转正则表达式
我有这个字符串:
[1] "19980213" "19980214" "19980215" "19980216" "19980217" "iffi" "geometry"
[8] "date_consid"
我想匹配所有不是日期而不是“date_consid”的元素。我试过
res = grep("(?!d{8})|(?!date_consid)", vec, value=T)
但我就是不能让它工作......
回答
您可以使用
vec <- c("19980213", "19980214", "19980215", "19980216","19980217", "iffi","geometry", "date_consid")
grep("^(d{8}|date_consid)$", vec, value=TRUE, invert=TRUE)
## => [1] "iffi" "geometry"
查看R 演示
在^(d{8}|date_consid)$
正则表达式的字符串只包含任何八位或等于匹配date_consid
。
该value=TRUE
品牌grep
的返回值,而不是指数和invert=TRUE
逆正则表达式匹配结果(回报那些不匹配)。