Совпадение точки с любым символом (/s)

По умолчанию точка (.) не совпадает с символом новой строки; это вполне логично для большинства шаблонов, рассчитанных на поиск «в пределах одной логической строки». Если строковые данные могут содержать внутренние символы новой строки и вы хотите, чтобы точка совпадала с этими символами, воспользуйтесь модификатором /s. С ним каждая точка1 в шаблоне действует как символьный класс [\d\D], то есть совпадает с любым символом, включая символы новой строки. Конечно, поведение программы изменяется только в том случае, если данные содержат внутренние символы новой строки:

$_ = "I saw Barney\ndown at the bowling alley\nwith Fred\nlast night.\n";
if (/Barney.*Fred/s) {
print "That string mentions Fred after Barney!\n";
}

Без модификатора /s поиск завершится неудачей, потому что два имени находятся в разных логических строках.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Perl на эту тему:
Автоматические переменные совпадения
Границы слов
Добавление пропусков (/x)
Другие модификаторы
Жизненный цикл переменных частичных совпадений