Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
perl.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
388.1 Кб
Скачать

Использование регулярных выражений для поиска по ключевымсловам

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

if ($str =~ /pattern/)

В данном случае регулярные выражения принимают значение <истинно>, если образец найден в строке ($str). Если строка по содержит образца, то выражение возвращает значение <ложно>. Например, следующее выражение проверяет, содержит ли строка текст WebProgramming:

if ($str =~ /Web Programming/)

Для того, чтобы проверить полное совпадение, выражение должно привязать сравнение к началу и концу строки. Например, следующее выражение имеет значением величину <истинно>, если итолько если переменная $str принимает одно из трех значений:<banana>, <bananana>) <banananana>:

($str =~ /^ba(na) {2,4}$/)

Аналогичным образом, следующее выражение истинно тогда итолько тогда, когда переменная $str содержит слово <the> и не является частью другого слова, такого как <their>.

($str =~ /\bthe\b/)

Использование регулярных выражений для анализа входных данных

По мере усложнения ваших скриптов Perl возникнет много случаев, когда вы захотите узнать больше, чем просто проверить, совпадает ли образец со строкой или нет. Например, может потребоваться, чтобы скрипт извлек определенное значение строки.Используя символы группировки () внутри регулярного выражения,скрипт может извлечь соответствующие образцу значения из строки исформировать из них список. Например, следующий фрагмент программы использует регулярные выражения для того, чтобы извлечь месяцы, дни и годы из списка:

$str = " January 1, 1997, ";

($m, $d, $y) = $str =~ /\s*(\S*)\s + (\d+)\D + (\d{4})/;

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

? Пропустить вначале любой специальный символ;

? записать все символы, не являющиеся специальными, в переменную $m

? (переменная для обозначения месяцев);

? пропустить специальный символ;

? поместить все цифры в переменную $d (переменная для записи дней);

? пропустить все знаки, не являющиеся цифрами;

? записать четыре цифры в переменную $у (переменная для обозначения лет).

Perl поддерживает также другую форму сравнения с образцом,использующую оператор (=~), который добавляет отрицание результата: (!~). Этот оператор эквивалентен выражению !($str=~/pattern/).

Регулярные выражения для поиска и замены строк

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

$str =~ s/pattern/replacement/;

Например, следующая инструкция заменит слово <colour> на<color>:

$str =~ s/\bcolour\b/color/;

Небольшая модификация позволяет заменить все слова <colour>на <color>:

$str =~ s/\bcolour\b/color/g;

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

Используя суффикс i, можно задать выполнение поиска с учётом регистра. В противоположность простой проверке на соответствие образцу, следующее выражение осуществляет также и замену:

$str =~ tr/SearchList/ReplacementList/;

Например, замена всех символов нижнего регистра теми же символами верхнею регистра может быть осуществлена таким образом:

$str =~ tr/a-z/A-Z/; # меняет регистр, с нижнего на верхний

Проанализируйте сами следующий пример:

$letters = "abcde";

print "$letters\n" # Выведет abcde

$letters =~ tr/a-z/A-Z/;

print "$letters\n" # Выведет ABCDE

РЕЗЮМЕ

В этой главе рассмотрено введение в программирование на языке Perl. Используя рассмотренные здесь концепции, можно писатьсложные скрипты CGI на языке Perl. Следующая глава окажет вам помощь в получении навыков в создании CGI-скриптов на языке Perl,которые можно запустить на собственном сервере. Прежде чем следовать далее, удостоверьтесь, что вы понимаете следующие ключевыеконцепции:

? Perl представляет собой интерпретируемый язык программирования,который используется программистами для написания скриптов дляWeb и Internet.

? Конструкции языка Perl во многих отношениях напоминают аналогичные конструкции языка С, однако Perl предлагает много дополнительных возможностей, в особенности для обработки строк и файлов,которые трудно отыскать в языке С.

? Perl является основным языком для написания CGI-программ дляWeb и Internet, в первую очередь благодаря своей гибкости, компактному стилю и обеспечению высокой безопасности.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]