Спецификация языка Perl

П2.4.2 Регулярные выражения



П2.4.2 Регулярные выражения

Perl позволяет использовать регулярные выражения. Для того чтобы пояснить, что же представляет из себя регулярное выражение приведем несколько примеров:

/SWAP.*/ - соответствуют все слова начинающиеся со SWAP и заканчивающихся произвольным набором символов. Точка обозначает произвольный символ, звездочка - то, что символ, стоящий перед ней, входит в слово 0 и более раз. Все метасимволы, которые будут описаны ниже, бозначают вхождение того, что стоит перед ними.

/\w*/ - соответствуют слова состоящие только из алфавитных, цифровых символов и символа подчерк. \w - соответствует алфавитным, цифровым символам и символу подчерк, звездочка - тому, что эти символы могут входить произволное количество раз. Здесь мы приведем только основные метасимволы. Для более подробной информации смотрите соответствующие страницы man по Perl. ¯ * соответствует 0 или более вхождений + соответствует 1 или более вхождений ? соответствует 1 или 0 вхождений {n} соответствует ровно n вхождений {n,} соответствует по крайней мере n вхождений {n,m} соответствует по крайней мере n, но не более m вхождений

Метасимвол * эквивалентен {0,}, + эквивалентен {1,} и ? эквивалентен {0,1}. Ограничений на величину m и n нет. Эта стандартная конструкция работает в ``жадном'' режиме, то есть: регулярному выражению a.*b будет соответствовать всевозможный набор слов начинающихся с символа a и кончающихся символом b, в том числе слова типа abcab. В таких словах есть подпоследовательности символов, которые также удовлетворяют условиям регулярного выражения. Если после каждого из описанных метасимволов поставить знак ?, то подобные последовательности будут опускаться. Шаблоны обрабатываются как строка в двойных кавычках, поэтому приведенные ниже последовательности также будут обрабатываться: ¯ \l - передвижение на символ вниз \u - передвижение на символ вверх

А также все перечисленные ранее бакслэш-последовательности. В Perl-е определены также: ¯ \w - соответствуют алфавитные и цифровые символы а также символ подчерк \$W - соответствуют все символы не входящие во множество символов w \s - символы пробела, табуляции, возврата каретки \S - все символы не входящие во множество символов s \d - цифровые символы \D - нецифровые символы


Обратите внимание, что \ w отмечает только отдельные символы, а не все слово. Чтобы отметить все слово нужно использовать \w+. Также определены следующие команды: ¯ \b - соответствуют границы слова \B - соответствуют не-границы слова \A - соответствуют только начало строки \Z - соответствуют только конец строки

При использовании конструкции типа ( ... ), \<digit> подставляет подстроку из скобок с номером digit. Можно использовать скобки для отделения подшаблона. Если в скобках имеется более, чем 9 подстрок, то переменные $10, $11, ... содержат соответствующие подстроки. $+ возвращает то, чему соответствует последняя конструкция в скобках. $& возвращает подставленную строку. $` возвращает все перед подставленной строкой, $' возвращает все после подставленной строки. $_ = 'abcdefghi'; /def/; print "$`:$&:$'\n"; - напечатает abc:def:ghi

На этом мы закончим описание регулярных выражений, для более подробной информации читайте manual page.


Содержание раздела