他のいくつかの文字列を含むされていない二重引用符の間で、文字列にマッチする正規表現

イリヤGazman:

特定の単語を含まない行に二重引用符の間に言葉を一致させる方法

入力:

  • SYSTEM.LOG( "エラー");
  • 新しい例外(「エラー」);
  • view.setText( "メッセージ")。

上記の入力から、私はとのラインを無視したいlogExceptionそれらの単語を(大文字と小文字を区別)と二重引用符の間に言葉を一致させます。

予想される出力

  • メッセージ

私は運なし先読みを使用しようとしています

(?s)^(?!log)".+"

私はIntelliJの使用して正規表現での検索のためにこれを必要とします

第四鳥:

あなたのパターンでは(?s)^(?!log)".+"、文字列の先頭ではない直接の後に、それは何であることを主張しますので、否定先読みは数量詞が含まれていませんlog

あなたはどうする可能性は、数量詞を使用している.*一致のいずれかに交互にlogまたはException単語の境界をして追加し\b、それらはより大きな単語の一部であることを防止します。

そして、あなたは否定文字クラスを使用する場合があります[^"]ない二重引用符と一致し、キャプチャグループを使用するように([^"]+)二重引用符の間の値のために。

^(?!.*\b(?:log|Exception)\b)[^"]*"([^"]+)"

Javaでは:

String regex = "^(?!.*\\b(?:log|Exception)\\b)[^\"]*\"([^\"]+)\"";

正規表現のデモ

あなたはドットが改行にマッチするようにしたい場合は、先頭に追加することができます(?s)パターンに。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=239042&siteId=1