Уроки модуля (1/4)
Буквальные шаблоны
В регулярном выражении "обычные" буквенно-цифровые символы просто совпадают друг с другом: напишите
ciao в качестве шаблона, и механизм будет искать подстроку ciao внутри
текст. Ничего более волшебного: сканирование слева направо позиция за позицией.
Pattern: ciao
Sample: Buongiorno, ciao mondo! Ti dico anche ciao.
^^^^ ^^^^Совпадение всегда несет в себе две ключевые части информации:
- совпадающий текст (здесь
ciao); - индекс (смещение, отсчитываемое от 0), где он начинается в образце (здесь
12и38).
По умолчанию регулярные выражения чувствительны к регистру: ciao не соответствует Ciao или
CIAO. Чтобы игнорировать регистр, добавьте флаг i (регистронезависимый).
Как работает двигатель
Механизм регулярных выражений проверяет текст по одному символу за раз. При поиске буквального шаблона ciao сначала ищется буква c. После обнаружения он проверяет, является ли следующий символ i, затем a и, наконец, o. Если какое-либо из этих совпадений не удается, движок возвращается к следующей начальной позиции и снова начинает поиск c.
Литеральные шаблоны и флаг g
Без флага g (глобального) механизм останавливается при первом совпадении, которое он находит, и останавливается. С
g продолжается и собирает все последующие совпадения до конца строки. В этом курсе мы будем
почти всегда включайте g: мы хотим видеть каждое совпадение, присутствующее в тексте.
Попробуйте это
Найдите каждое точное (с учетом регистра) вхождение слова «ciao» в образце. Подсказка: помните флаг `g`.
Показать подсказку
Образец – это само слово. Прописные буквы не должны совпадать: нет флага i.
Решение доступно после 3 попыток
Обзор упражнения
Найдите каждое вхождение слова «errore» в тексте, игнорируя верхний/нижний регистр.
Показать подсказку
То же слово, что и в шаблоне, но рядом с g добавляется флаг i (без учета регистра).
Решение доступно после 3 попыток
Дополнительная задача
Определите и соберите все точные вхождения слова «ПРЕДУПРЕЖДЕНИЕ» (в верхнем регистре, с учетом регистра) в образце текста журнала.
Показать подсказку
Найдите буквальную строку ПРЕДУПРЕЖДЕНИЕ, следя за тем, чтобы не был активирован флаг i.
Решение доступно после 3 попыток