我无法让负面的前瞻工作。
我想在文件中提到所有提及“警告”或“错误”的行,但如果该行提及“clearmake”则不行。
所以它应该抓住这个:
This is a warning : bla bla
但不是这样:
clearmake.exe: This is a warning : bla bla
我玩过负面的前瞻,但我无法让它发挥作用
(?!clearmake).*$
任何想法?谢谢!
答案 0 :(得分:4)
您可以在正则表达式中执行此操作,但您需要对此进行高级正则表达式理解。如果您使用2 if()
或逻辑运算符和普通字符串搜索来执行此任务,可能会更容易阅读/理解。
您应始终为此类问题提供语言标记,以便有机会获得其他答案。
我解释一个正则表达式解决方案,我假设您正在逐行读取该文件。
您希望匹配warning
或 error
==>使用替换\b(?:error|warning)\b
。
但不包括clearmake
==> ^(?!.*\bclearmake\b)
所以你的正则表达式看起来像这样:
^(?!.*\bclearmake\b).*\b(?:error|warning)\b
\b
是wordboundary以避免部分匹配
^
是字符串开头的anchor
(?!.*\bclearmake\b)
negative lookahead assertion
答案 1 :(得分:0)
你可以试试这个
^(?!.*\bclearmake\b).*(warning|error).*$
---------------
|
|->match further only if the string doesn't have clearmake