Учитывая следующий текст:
Меня зовут Фу.
Меня зовут бар.
Чтобы вернуть каждую строку, содержащую или не содержащую определенную подстроку, можно использовать как положительные, так и отрицательные шаблоны регулярных выражений для возврата одного и того же результата:
Положительный просмотр вперед: ^(?=.*bar).*$
возвращает My name is bar.
Отрицательный прогноз: ^((?!foo).)*$
возвращает My name is bar.
Однако почему отрицательный прогноз должен быть вложен в несколько наборов круглых скобок с квалификатором .
и квантификатором *
, разделенными круглыми скобками, тогда как в положительном прогнозе они могут быть смежными .*
?