Уроки модуля (3/4)
Подстановочный знак: точка `.`
Точка . в регулярном выражении является подстановочным знаком: она соответствует любому одиночному
символ\u2026 за одним важным исключением: он НЕ соответствует
новая строка (\n).
Pattern: c.t
Sample: cat cot cut c@t c\nt
^^^ ^^^ ^^^ ^^^Три буквы: c, любой символ, t. Между ними нет новой строки, поэтому c\nt
не совпадает (по умолчанию).
Точка чрезвычайно полезна, но и опасна: использовать ее без дисциплины.
захватывает больше, чем вы планировали. В сочетании с кванторами в модуле 2
(.*, .+?) это источник 90% шаблонов, которые «работают не так, как я
ожидаемо».
Флаг s: «dotAll»
С флагом s (также называемым dotAll или single-line) точка соответствует
каждый символ, включая новую строку. Полезно для извлечения блоков, охватывающих
несколько строк.
Pattern: <p>.*</p>
Flag: gs
Sample: <p>prima\nseconda</p>
^^^^^^^^^^^^^^^^^^^^^Ограничения и поведение подстановочного знака точки
Точка . является мощным подстановочным знаком, но по умолчанию она не соответствует символам новой строки (\\n). Если вы хотите, чтобы точка соответствовала абсолютно всему, включая символы новой строки, необходимо включить флаг s (dotAll). Будьте осторожны при объединении точки с квантификаторами (.*), так как она имеет тенденцию потреблять слишком много текста (жадное поведение).
Попробуйте это
Найдите каждую тройку символов, разделенную круглыми скобками, например. `(abc)`, `(xyz)`. Используйте подстановочный знак для трех внутренних символов.
Показать подсказку
Три точки для трех произвольных символов. Круглые скобки являются метасимволами: их необходимо экранировать с помощью \\.
Решение доступно после 3 попыток
Обзор упражнения
Извлеките блок между `[INIZIO]` и `[FINE]`, который может занимать несколько строк. Вам понадобится флаг `s`, чтобы точка также соответствовала символу новой строки, и «ленивая» версия квантификатора (`.*?`, модуль 2).
Показать подсказку
Без флага s точка останавливается в конце строки: добавьте ее. Форма .*? (ленивый) останавливает матч при первом [FINE].
Решение доступно после 3 попыток
Дополнительная задача
Find all 3-character sequences starting with `c` and ending with `t` (e.g. `cat`, `cot`, `c-t`).
Показать подсказку
В шаблоне используется точка '.' для представления среднего символа подстановочного знака.
Решение доступно после 3 попыток