正则表达式不匹配行

时间:2013-10-30 13:42:36

标签: regex line

我想问一下如何创建一个正则表达式,它将选择所有不包含此模式的行:(.*:.*)

我试过这样的

^((?!(.*:.*)).)*$ 

来自this site,但我无法让它发挥作用。

4 个答案:

答案 0 :(得分:4)

从这看起来我觉得你试图选择所有不包含:的行。

为此,您可以使用以下正则表达式:

^([^:]+)$

答案 1 :(得分:3)

只需使用此模式,并为全局设置选项g,为多行设置m

^([^:]*)$

如果您不想捕获空行(未指定),请将*更改为+

小提琴:http://www.rexfiddle.net/pmEFFQR

答案 2 :(得分:2)

我相信(。*:。*)表示0个或更多任何字符,后跟':',后跟0或更多任何字符。所以以下内容将与之匹配。

  • A:B
  • ABC:DEF
  • :ABC
  • ABC

基本上,如果我们打破这个,我们正在寻找任何不包含':'字符的行。所以像这样的东西会起作用

^[^:]+$

答案 3 :(得分:0)

使用以下正则表达式:

^(?!(.*:.*)).*(\n|$)

?!(.*:.*)是一种否定的预测,以确保前方没有匹配.*:.*的模式。

这样一个零个或多个字符的行由以下.*匹配,并且必须后跟新行(\ n)或字符串结尾($)。