Имеется следующий текст:
Running postupdate SQL scripts...
Executing script: Init!Checks.SQL
Выключен контроль целостности данных базы. Включить!
Msg 50000, Level 1, State 16, Line 2, Procedure '', Server 'dbs'
Выключено автоматическое создание статистик. Включить!
Msg 50000, Level 1, State 16, Line 2, Procedure '', Server 'dbs'
Выключен режим SNAPSHOT. Включить!
Msg 50000, Level 1, State 16, Line 2, Procedure '', Server 'dbs'
Error messages: 3
Queries count 15
Executing script: Common_MESSAGE.SQL
Error messages: 0
Queries count 43
Executing script: Common_TYPEDEF.SQL
Error messages: 0
Queries count 5
Executing script: Init_CommonRights.SQL
Error messages: 0
Queries count 32
Executing script: Init!Checks.SQL
Выключен контроль целостности данных базы. Включить!
Msg 50000, Level 1, State 16, Line 2, Procedure '', Server 'dbs'
Выключено автоматическое создание статистик. Включить!
Msg 50000, Level 1, State 16, Line 2, Procedure '', Server 'dbs'
Выключен режим SNAPSHOT. Включить!
Msg 50000, Level 1, State 16, Line 2, Procedure '', Server 'dbs'
Error messages: 3
Задача: выделить фрагменты между: Executing script: и Error messages: [1-9]
Если "Error messages: 0" - то фрагмент выделять не нужно.
Проверяю регулярки я тут.
Написал следующую: (Executing script:)[\w\W]*?(Error messages: [1-9])
Но она не обрабатывает вышеописанную ситуацию с "Error messages: 0". Вот наглядно:
!(https://cs7054.userapi.com/c836130/v836130547/4ca14/yWRiimEtREo.jpg)
Пока не могу сообразить, как мне исключить выделенные фрагменты. Спасибо за помощь.
В таких случаях необходимо использовать "жадный" "умеренный" квантификатор (англ. "tempered greedy token"):
(?s)Executing script:(?:(?!Executing script:).)*?Error messages: [1-9]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
См. демо регулярного выражения. Тут точка находит любой символ кроме такого, который является началом подстроки Executing script:.
Здесь (?s) является строковой версией опции RegexOptions.Singleline, благодаря которой . также находит знаки перехода на новую строку (LF).
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости