-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 に答える