2017-10-23 19 views
1

regexを使って2番目のグループの文字列にマッチする方法はありますか?正規表現と一致する2番目のグループ

私が使用しているツールはRundeck's Global Log Filters (Hightlight Output)

ツールの説明です:

テストする正規表現。グループを使用して選択的に強調表示します。

正規表現:テストメッセージ:これは試験結果である。のみハイライトグループ化されたセクションに、このテストを使用する正規表現である グループ:

正規表現:この( より全体一致を強調するために、非グループ化されたパターンを使用し(試験) 結果: a 試験Java Pattern のマニュアルを参照してください。

例:

3) Manager port: 2614 
4) Tcp Port: 2615 
3) Manager port: 2714 
4) Tcp Port: 2715 

以上である文字列は、私だけ"3) Manager port: 2714"の試合を取得したいです。ここで私が思い付くものを(?:Manager port:.*){1}

である。しかし、それはまだ3) Manager port: 26143) Manager port: 2714

の両方に一致おかげ

+1

確かに、[ '[\ S \ S] * \ KManagerポート:*'](https://regex101.com/r/p4SKqY/1) –

+0

WiktorStribiż[email protected]ありがとうございました。それがまさに私が必要なものです。 –

+0

"3)Manager port:"で始まる2行目だけを使用したい場合は、regexを使用しないでください。単純な 'String.startsWith()'がそのトリックを行います。 – alfasin

答えて

0

(?:Manager port:.*){1}Manager port:.*に等しく、ただのManager:部分文字列と行の残りの部分と一致しました。多くのように任意の0+文字 - のjava.util.regex正規表現ライブラリで

、あなたはregex demo

詳細

  • [\s\S]*を参照してください

    [\s\S]*(Manager port:.*) 
    

    を使用することができます可能であれば([\s\S]は「ハック」です)、安全にがDOTALL修飾子と修飾基を表すのと同じことを行うは

  • ()改行文字を含む任意の文字をオンにし、これ.マッチ - リテラルストリング
  • .* - キャプチャグループは
  • Manager port:を開始します - 可能な限り多くの行ブレーク文字以外の0以上の文字。
  • ) - キャプチャグループエンド。
+0

が必要です。それでもRudeckの両方のレコードがハイライトされています。本当にその根本的な原因はわかりません –

+0

@JervisLinドキュメントへのリンクを投稿してください。 –

+0

ちょうど質問 –

関連する問題