3

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

我试过这样

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

这个网站,但我无法让它工作。

4

4 回答 4

4

在我看来,您正在尝试选择所有不包含:.

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

^([^:]+)$

于 2013-10-30T13:45:39.690 回答
3

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

^([^:]*)$

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

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

于 2013-10-30T13:46:27.117 回答
2

我相信 (.*:.*) 的意思是,0 个或多个任何字符,后跟 ':',然后是 0 个或多个任何字符。所以以下内容将与之匹配。

  • 甲:乙
  • abc:定义
  • :abc
  • 美国广播公司:

基本上,如果我们将其分解,我们正在寻找任何不包含 ':' 字符的行。所以这样的事情会起作用

^[^:]+$
于 2013-10-30T13:51:25.177 回答
0

使用以下正则表达式:

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

?!(.*:.*)是一个负前瞻,以确保前面没有模式匹配.*:.*

此类具有零个或多个字符的行由以下内容匹配,.*并且必须跟在换行符 (\n) 或字符串结尾 ($) 之后。

于 2013-10-30T13:48:22.580 回答