-1

我无法让消极的前瞻性工作。

我想捕获文件中所有提到“警告”或“错误”的行,但如果该行也提到“clearmake”则不会。

所以它应该抓住这个:

This is a warning : bla bla

但不是这个:

clearmake.exe: This is a warning : bla bla 

我玩过负前瞻,但我无法让它工作

(?!clearmake).*$

有什么想法吗?谢谢!

4

2 回答 2

4

您可以在正则表达式中执行此操作,但您需要对正则表达式进行高级理解。if()如果您使用 2 个或逻辑运算符和正常的字符串搜索来执行此任务,可能会更容易阅读/理解。

您应该始终为此类问题提供语言标签,以便有机会获得替代答案。

我解释了一个正则表达式解决方案,我假设您正在逐行读取该文件。

  1. 您想匹配warning OR error ==> 使用替代\b(?:error|warning)\b

  2. 但不是在包含clearmake==>的行中^(?!.*\bclearmake\b)

所以你的正则表达式看起来像这样:

^(?!.*\bclearmake\b).*\b(?:error|warning)\b

在 Regexr 上查看

于 2013-02-21T08:07:59.600 回答
0

你可以试试这个

^(?!.*\bclearmake\b).*(warning|error).*$
    ---------------
        |
        |->match further only if the string doesn't have clearmake
于 2013-02-21T08:07:16.933 回答