/ / якщо regex захоплення містить дужку, то захоплює вміст дужки ще захоплення групи - regex, regex-group

якщо у вставці regex міститься скобка, а потім фіксується вміст брекету, ще зберегти групу - регулярні вирази, регулярні виклики-групи

У мене є такі рядки ...

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 Group # 2 містить другий набір дужок []
  • THEN Захоплення вмісту дужок
  • ELSE Захоплення вмісту групи

І отримайте результат:

  • Рядок 1: група №2: PQ.ACCOUNTS.IN
  • Рядок 2: група №2: за промовчанням-14

Відповіді:

1 для відповіді № 1

Ви можете скористатися групами, що не захоплюють, щоб зробити цепризначення ставок - спочатку вибираючи зовнішні дужки, а потім намагаючись знайти, чи є внутрішні дужки у виборі і захопити те, що "між ними, або просто захопити, що між зовнішніми дужками:

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

Ви не вказали мову, яку ви використовуєте, але це поверне вам дві групи - у випадку Line 1 перша група захоплення буде містити захоплену рядок у випадку Line 2 друга група захоплення буде містити те, що "s" між дужками.