Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中反转正则表达式_R_Regex_Stringr - Fatal编程技术网

在R中反转正则表达式

在R中反转正则表达式,r,regex,stringr,R,Regex,Stringr,我有这个字符串: [1] "19980213" "19980214" "19980215" "19980216" "19980217" "iffi" "geometry" [8] "date_consid" 我想匹配所有非日期和非“日期”的元素。我试过了 但我就是不能让它工作…你可以用

我有这个字符串:

[1] "19980213"    "19980214"    "19980215"    "19980216"    "19980217"    "iffi"        "geometry"   
[8] "date_consid"
我想匹配所有非日期和非“日期”的元素。我试过了

但我就是不能让它工作…

你可以用

vec[1]“iffi”几何体

^(\d{8}| date_consid)$
正则表达式匹配一个仅由八位数字组成或等于
date_consid
的字符串


value=TRUE
使
grep
返回值而不是索引,并且
invert=TRUE
反转正则表达式匹配结果(返回不匹配的结果)。

您尝试的模式提供了所有匹配,因为lookaheads是未排序的

使用带有或
|
的单独语句仍将匹配所有字符串

您可以将逻辑更改为从字符串开始断言,直接在右边的不是8位数字,也不是单个检查中考虑的日期

使用正向前瞻,您必须添加
perl=T
,并添加锚点
^
以断言字符串的开头,并添加锚点
$
以断言前瞻后字符串的结尾

 ^(?!\\d{8}$|date_consid$)
  • ^
    字符串的开头
  • (?!
    负前瞻
    • \\d{8}$
      匹配8位数字直到字符串结束
    • |
    • date\u consid$
      匹配日期\u consid直到字符串结束
  • 关闭前瞻
比如说

vec <- c("19980213", "19980214", "19980215", "19980216","19980217", "iffi","geometry", "date_consid")
grep("^(?!\\d{8}$|date_consid$)", vec, value=T, perl=T)

您不需要或
|
,您希望这两个条件都为真。
vec <- c("19980213", "19980214", "19980215", "19980216","19980217", "iffi","geometry", "date_consid")
grep("^(?!\\d{8}$|date_consid$)", vec, value=T, perl=T)
[1] "iffi"     "geometry"