2017-11-09 20 views
0

なぜ複数行の正規表現マッチ

下のテキストのために働いていない、以下の正規表現

正規表現:

(?=.*\berror\b)(?=.*\balarm\b).* 

テキスト:複数行の正規表現マッチを行う方法の他の作品で

ns1.alarm.abc 
ns2.error.cdb 

+1

複数行の正規表現として

(?=[\s\S]*\berror\b)(?=[\s\S]*\balarm\b)[\s\S]*は、多くの場合、あなたの正規表現エンジン/ツールで設定したモードです。あなたのパターンについては、先読みは私に間違って見えます。正規のパターンにマッチしないのはなぜですか? –

+1

あなたは何を試そうとしていますか? – Ibrahim

+0

どの正規表現エンジン/言語を使用していますか?複数行モードを有効にする方法についての情報が必要な場合は重要です。 –

答えて

0

私はあなたがerroralarmのいずれかを含む文字列を検索し、そのためにあなたが次のことを試すことができますしようとしていると思う:

この正規表現を試してみてください:

(?=.*\b(?:error|alarm)\b).*

Click for Demo

説明:

  • (?=.*\b(?:error|alarm)\b) - errorORalarm
  • .* - - 言葉の有無をチェックするための肯定先読み上記の条件が満たされた場合に、(改行文字を除く)のすべての文字の一致0+出現

正規表現(?=.*\berror\b)(?=.*\balarm\b).*は、同じ行/入力文字列にerroralarmの両方の単語を検索しようとしているため、動作しません。したがって、上記のようにOR条件を設定する必要がありました。

更新:

の両方を一致させるには、これを使用しています。示さHERE

+0

ありがとうございます。しかし、テキスト全体(1行だけではありません)でエラーとアラームを見つける必要があります>これを行うにはより良い方法がありますか? – Iamtheroot

+0

@Iamtheroot答えを更新しました。 yaのために働くかどうか私に知らせてください。 – Gurman

+0

ありがとうGurman。まさに私が探していたもの。 – Iamtheroot