Модульні уроки (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 (точкаВсе). Будьте обережні, поєднуючи крапку з квантифікаторами (.*), оскільки це має тенденцію споживати занадто багато тексту (жадібна поведінка).
Спробуйте
Знайти кожну трійку символів, розділених дужками, напр. "(abc)", "(xyz)". Використовуйте символ підстановки для 3 внутрішніх символів.
Показати підказку
Три крапки для трьох довільних символів. Дужки є метасимволами: їх потрібно екранувати за допомогою \\.
Рішення доступне після 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 спроб