具有负前瞻性的正则表达式无法正常工作

时间:2016-08-12 09:46:20

标签: javascript regex text

Edit the Expression & Text to see matches.

Expression sample

这是包含两行的文本文档。我想搜索“表达”一词,使其不跟随“匹配”字。因此输出将与“表达式样本”行匹配。 请帮助生成正则表达式。我尝试使用以下正则表达式,但这不起作用。非常感谢

^(.*)Expression(.*)(?!matches)$

2 个答案:

答案 0 :(得分:2)

在同样的情况下,正则表达式将匹配以下内容:

 Edit the Expression & Text to see matches.
^(.*     )Expression(.*                   )(?!matches)$

正如您所看到的,第二个.*已经消耗了字符串的其余部分,因此意味着前瞻不匹配(因为没有更多字符),并且行尾锚定匹配。< / p>

要编纂matches Expression之后Expression(?!.*matches) 可能不会出现的要求

(.*)

代替。如果您迫切需要它们,可选择Expression前后固定。这个正则表达式本质上意味着.*matches 必须在某处匹配,而整个子表达式Expression .*之后不得匹配比赛。由于该子表达式包含matches,因此在此之后的任何地方都会尝试匹配 df <- data.frame(structure(list(col1= c("A", "B", "C", "D", "A"), col2= c(1, 1, 1, 1, 5), col3 = c(2L, 1L, 1L, 1L, 1L)), .Names = c("col1", "col2", "col3"), row.names = c(NA, -5L), class = "data.frame")) ,如果它只匹配一次,则前瞻会失败。

答案 1 :(得分:1)

/Expression(?!.*matches)/
答案是答案。感谢anubhava帮助我。