/ / regexキャプチャがブラケットを含む場合はブラケットの内容をキャプチャし、それ以外はグループをキャプチャします - regex、regex-group

正規表現のキャプチャに括弧が含まれている場合、括弧の内容を取得するelseグループを取得する - regex、regex-group

次の行があります。

INFO   | jvm 1    | 2017/04/11 23:59:52 | 2017-04-11 23:59:52:[ - JmsConsumer[PQ.ACCOUNTS.IN]] JMS01 - Accounts Queue ACCTS1  INFO  Msg Detected
INFO   | jvm 1    | 2017/04/11 23:59:52 | 2017-04-11 23:59:52:[          default-workqueue-14] sendSoapTarget                 INFO  RESPONSE: <soap:Envelope

正規表現を作成しました

/(?:.*)(?:| )(?:.*)(?:| )(.*)(?:| )(?:.*)(:[.*[?.*]?])(?:s)(.{30})/g

グループ#2 - 正規表現を変更して以下のものをキャプチャする方法

  • IFグループ#2 2番目の大括弧[]が含まれる
  • かっこの内容をキャプチャする
  • ELSEグループの内容をキャプチャする

そして結果を得る:

  • 1行目:グループ#2:PQ.ACCOUNTS.IN
  • 2行目:グループ#2:default-workqueue-14

回答:

回答№1は1

あなたはあなたの活動をするために非捕獲グループを使うことができます入札 - 最初に外側の括弧を選択し、次に選択範囲内に内側の括弧があるかどうかを調べてそれらの間にあるものをキャプチャするか、または単に外側の括弧内にあるものをキャプチャすることです。

(?:[(?:.*?[(.*?)].*?|(.*?))])

使用する言語を指定できませんでしたが、2つのグループが返されます Line 1 最初のキャプチャグループは、キャプチャされた文字列を含みます。 Line 2 2番目のキャプチャグループには、大括弧で囲まれたものが含まれます。どちらの場合も、キャプチャグループは1つだけです。