2010-06-02 105 views

回答

0

尝试

^(?!\.+).+$ 

,或者,如果你需要精确匹配3个点,

^(?!\.{3}).+$ 

编辑,以显示情况与OP目前正则表达式:

^(?!\.{3})[^0]\\swarnings?(?!\\.|\\w)$ 
+0

只要语言支持负向预测。 (例如,GNU grep不会http://www.greenend.org.uk/rjk/2002/06/regexp.html) – Stephen 2010-06-02 15:29:12

+0

嗯,这与我现有的[[^ 0] \\ swarnings?( ?!\\。| \\ w)' – iamnotmad 2010-06-02 15:32:23

+0

将您的现有代码替换为。+ – 2010-06-02 15:35:40

1

如果使用语言支持无限大小的lookbehinds(如.NET),您可以使用

(?<!^\.\.\..*)yourterm 

如果你不能用这个,但要知道,有可能是只有一个匹配每行你的表情,你会发现那些通过使用

^(?!\.\.\.).*(yourterm) 

这实际上该行的整体开始匹配,但有一个术语,你在一个捕获组感兴趣。

如果每行可以有多个匹配项,我想只有一个正则表达式无法轻松实现。

在任何情况下,使用^(?!\.\.\.).*可能会首先排除以......开始的所有行,然后开始对这些行进行另一次运行以获得匹配结果。

+0

尽管许多*各种语言的*实现*可能会对外观的大小施加限制,但我怀疑任何语言本身都会施加这样的限制。 – 2010-06-02 16:39:02

+0

+1 - 对于正则表达式方法本身,+0.3 +对于最后一段中的理智/实用建议+0.7 ;-) – Tomalak 2010-06-02 17:04:42