Мне нужно регулярное выражение для соответствия 2 группам: успех (начало текстового блока) и все последующие, до следующего образца текста успеха с 3 блоками успеха:

Success        blablabla blablabla blablabla blablabla blablabla blablabla
blablabla blablabla
blablabla blablabla blablabla blablabla
blablabla blablabla
blablabla blablabla

Success        blablabla blablabla blablabla blablabla blablabla blablabla
blablabla blablabla
blablabla blablabla blablabla blablabla
blablabla 

blablabla
blablabla blablabla


Success        blablabla blablabla blablabla blablabla blablabla blablabla  blablabla blablabla blablabla blablabla blablabla blablabla
blablabla blablabla
blablabla blablabla blablabla blablabla 



blablabla blablabla
blablabla blablabla

Это регулярное выражение останавливает блок до первого \n:

(Success|Error|Critical|Warning)\s{8}((.*|\n*?|\r*?|[\r\n]*?)*)
1
Marco 8 Окт 2019 в 15:43

1 ответ

Лучший ответ

Один из многих возможных вариантов (с включенными multiline, verbose и singleline):

^(Success|Error|Critical|Warning)
.+?
(?=^(?:Success|Error|Critical|Warning)|\Z)

См. демонстрацию на regex101.com .

0
Jan 8 Окт 2019 в 12:53