Начинающим Web - разработчикам сайтов

Категории
Полезные сайты
Шаблоны

Основные понятия
Синтаксис языка Perl
Переменные
Встроенные переменные
Шаблоны
      Операторы ( 1 стр. )
Операторы ( 2 стр. )
Встроенные функции - 1
Встроенные функции -2
Подпрограммы и др.

Шаблоны

Язык Perl, как и многие другие языки программирования, имеет возможность в своем контексте применять шаблоны или так называемые регулярные выражения. Такие представляют собой символ или набор символов (метасимвол), которые вследствие применения каких-либо действий над ними, будут являться определенными стандартами в программе. Широкое применение шаблоны нашли в операторах поиска и операторах связки. Метасимволы в шаблонах такие:

  • ^ - начало строки
  • $ - конец строки
  • \ - переход от метасимвола к символу
  • [ ] - определение классов символов
  • ( ) - группирование (конструкция шаблона)
  • . - метасимвол, как один произвольный символ (кроме обозначения конца строки - "\n")
  • I - выбор между альтернатив
  • \w - соответствуют алфавитные и цифровые символы, а также символ подчерк ( "_")
  • \W - соответствуют все символы не входящие во множество символов "w"
  • \s - символы пробела, табуляции, возврата каретки
  • \S - все символы не входящие во множество символов s
  • \d - цифровые символы
  • \D - нецифровые символы
  • \b - соответствуют границы слова и относится к мнимым метасимволам, т.е. является мнимой точкой между \w и \W
  • \B - соответствуют не -границы слова, также мнимый
  • \A - соответствуют только, как начало строки, является мнимым и служит аналогией "^", при условии, что начало строки - это одинаковое значение для каждой строки в её многострочном аналоге.
  • \Z - соответствуют только, как конец строки, применяется как предыдущий, но в отношении к метасимволу "$".

Примечание: Обратите внимание, что \w и \d отмечают только отдельные символы, а не все слово. Чтобы отметить все слово нужно использовать модификатор "+" (см. ниже) - \w+ и \d+.

Чтобы было более понятно - приведем пример:

if ($string =~ /<title>(.*)<\/title>/i) , где видно сгруппированный метасимвол "." с его модификатором - "*".

Модификатор имеет место в каждом метасимволе, использующихся в шаблоне. Они задают значение регулярности сравнений, поиска и т.д.. Существуют следующие их обозначения:

  • * - цикл от "нуля" и более вхождений
  • + - аналогичен предыдущему, но "ноль" - не в счёт
  • ? - только "ноль" или "одно" вхождение
  • {n} - только ровно "n" вхождений
  • {n,} - по крайней мере не меньше "n" вхождений
  • {n,m} - по крайней мере не меньше "n", но и не превышало m-раз.

Примечание: "*" равен "{0,}" , "+" одинаков с "{1,}" и "?" аналогичен "{0,1}" . Ограничение на величину m и n - 65536.

Эта стандартная конструкция работает в ` `жадном'' режиме, иными словами, регулярному выражению a.*b будет соответствовать различный набор слов начинающихся с символа "a" и заканчивавшихся символом "b" . В таких словах существует последовательность символов, которые также удовлетворяют требованию регулярного выражения языка Perl. Если после каждого из описанных метасимволов подставить справа знак " ? ", то подобные метасимволы будут ограничиваться, т.е. произойдет их уменьшение распространения. При этом их значения не изменяться.

Шаблоны обрабатываются, как строка в двойных кавычках, поэтому приведенные ниже интерпретации с символом "\" (bakcslash) также будут обработаны компилятором как:

  • \n - с новой строки
  • \t - применить табуляцию
  • \v - применить вертикальную табуляцию
  • \a - перевести в другой формат
  • \r - перевести каретку
  • \e - сделать переход
  • \c - контролировать символ
  • \033 - восьмеричная обработка символа
  • x1A - шестнадцатеричная обработка символа
  • \E - произвести отмену для смены регистра
  • \u - работать по верхнему регистру
  • \U - работать по верхнему регистру до команды " \E "
  • \l - работать по нижнему регистру
  • \L - работать по нижнему регистру до команды " \E "
  • \Q - команда отмены (исключение) метасимвола

При применении конструкции шаблонов, например в " (...), \<title> " подставляет подстроку из скобок с номером title . Можно использовать скобки для отделения подшаблона. Например если в скобках имеется более, чем 12 подстрок, то переменные $13 , $14 , ... $n содержат соответствующие подстроки. И здесь приходят на помощь программисту дополнительные переменные:

  • $+ - возвращает то, чему соответствует последняя конструкция в скобках
  • $& - возвращает подставленную строку
  • $` - возвращает все перед подставленной строкой
  • $' - возвращает все после подставленной строки

Пример:

$_ = 'abcdefghi';
/def/;
print "$`:$&:$'\n"; # выведет результат, как abc:def:ghi

Если внимательно прочитать "manual page" языка Perl 5.0, то можно еще встретить такие конструкции регулярных выражений:

  • ( ?: шаблон) - как обычная конструкция, но без обратной связи (ссылки)
  • ( ?= шаблон) - возможность просмотра результатов раньше, чем логических вычислений.
  • ( ?! шаблон) - как и предыдущий, но логические вычисления - НЕ (отрицание)
  • ( ?# комментарий) - комментарии в самом шаблоне
  • (?ismx) - применение в шаблонах встроенных модификаторов
Начинающим Web - разработчикам сайтов
Rambler's Top100 Рейтинг@Mail.ru
Hosted by uCoz