Использование технологий WWW для доступа к базам данных

       

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


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.


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