Перейти к основному содержимому
Модуль 3 · Урок 3 из 411/32 в курсе~10 min
Уроки модуля (3/4)

Флаг `m`: многострочный

С флагом m (многострочный) привязки ^ и $ меняют значение: они больше не являются началом/концом ** всей строки**, а являются началом/концом ** каждая строка**. Строка ограничивается \n (или началом/концом строки). строка).

Code
Pattern: ^Errore
Flag:    gm
Sample:  Errore: A\nInfo: B\nErrore: C
         ^^^^^^         ^^^^^^

Без m он соответствовал бы только Errore в абсолютном начале образец (1 совпадение). При использовании m он соответствует началу каждой строки (2 совпадения).

m НЕ меняет точку

Распространенная путаница: флаг m НЕ меняет значение точки. .. Точка по-прежнему НЕ соответствует \n даже с m. Чтобы поставить точку сопоставьте все, что вам нужно, с флагом s (описанным в модуле 1).

m и s ортогональны: их можно использовать вместе (ms), по отдельности, или ни того, ни другого.

Многострочный флаг и построчная обработка

Флаг m изменяет поведение ^ и $, заставляя их соответствовать началу и концу каждой строки (разделенной \\n) внутри многострочного текстового блока, вместо того, чтобы просматривать только абсолютное начало и конец всей строки.

Попробуйте это

Упражнение#regex.m3.l3.e1
Попыток: 0Загрузка…

Найдите каждую строку, начинающуюся с «ERROR». Каждая строка разделяется \\n; используйте флаги `g` и `m`.

Загрузка редактора…
Показать подсказку

Флаг m заставляет ^ соответствовать началу внутренних строк, а не только абсолютному первому символу.

Решение доступно после 3 попыток

Обзор упражнения

Упражнение#regex.m3.l3.e2
Попыток: 0Загрузка…

Найдите каждую строку, которая ЗАКАНЧИВАЕТСЯ точкой. Используйте якорь `$` с флагами `m` и `g`.

Загрузка редактора…
Показать подсказку

\\.$ с флагами GM соответствует точке в конце каждой строки, а не только в конце образца.

Решение доступно после 3 попыток

Дополнительная задача

Упражнение#regex.m3.l3.e3
Попыток: 0Загрузка…

Find all lines in a multiline log that start exactly with the string `ID:` followed by a digit.

Загрузка редактора…
Показать подсказку

Используйте ^ перед идентификатором: и убедитесь, что флаг m активен.

Решение доступно после 3 попыток