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

Поддержка регулярных выражений - одна из главных особенностей языка. Это одно из тех преимуществ языка, которые дали ему такую популярность именно в CGI-программировании. Регулярные выражения позволяют в разы сокращать запись сложных условий и значительно облегчают решение таких задач, как декодирование, обработка форм и текстов.

Синтаксически регулярные выражения записываются между двух слешей:
/рег_выражение/

Ниже приведены два примера: сначала совсем простой, а затем сложнее:
if (/abc/) {
print "$_ содержит abc\n"};


if (/(ftp|http):\/\/([^\/]+)(.*)/) {
print "Протокол $1\n";
print "Сервер $2\n";
print "Документ $3\n"; }

В следующей таблице приведены основные правила построения регулярных выражений:

Конструкция

Значение

Пример использования

. Соответствует любому символу /ab.c/
[мн-во символов] Соответствует любому символу из данного множества /[abc]d/
[^мн-во] Отрицание множества символов /[^xyz]/- соответствует всему, что не содержит x, y, и z
(...) Группировка элементов с их запоминанием в переменных $1, $2, $3 и т. д. /(xyz)*//([ab.c])
(...|...|...) Одна из альтернатив /(ftp|http)/
* Повторение образца 0 или более раз (.*) - соответствует всему
? Повторение 0 или 1 раз /(http:\/\/)?.*/
+ Повторение 1 или более раз
{n,m} Повторение от n до m раз
{n} Повторение ровно n раз
{n,} Повторение n и более раз
^ Соответствует началу строки /^http:/
$ Соответствует концу строки /.cgi$/

В следующей таблице приведены обозначения различных специальных символов в регулярных выражениях.

Символ

Значение

\t \r \n Управляющие символы: табуляция, возврат каретки, перевод строки.
\d Соответствует цифре, аналог [0..9]
\D Соответствует нецифровому символу, аналог ^[0..9]
\w Соответствует букве
\W Соответствует небуквенному символу. Аналог ^/w
\s Соответствует пробельному символу (пробел, табуляция, новая строка).
\S Соответствует непробельному символу
\b Соответствует границе слова
\B Соответствует не границе слова.

Опции регулярных выражений

Помимоиспоьзования специальных символов, регулярноиу выражению можно задавать еще и опции , такие как, например, режим игнорирования регистра (ключ i), глобальный флаг (ключ g), вычисление выражений (ключ e). Опции ставятся в конце регулярного выражения после слэша.