На протяжении этой главы вы познакомились с примерами функций для обработки строк. Многие из них основаны на концепции регулярных выражений. Как вы видите из следующих разделов, скрипты языка Perl широко используют регулярные выражения для обработки текста. Если регулярные выражения внове для вас, то не беспокойтесь. Спустя короткое время после того, как вы познакомитесь с несколькими разделами этой главы, регулярные выражения станут для вас просты и понятны.
Регулярные выражения являются причудливым термином, возникшим в компьютерной науке и служащим для обозначения образца, состоящего из символов. Скрипты на языке Perl используют символьные образцы просто для того, чтобы провести анализ входных данных, расщепляя их на части. Часто скрипт может проанализировать входные данные, основываясь на пробелах, запятых, символах табуляциии других разделителях. Но когда входные данные имеют произвольный формат то лучше всего с такой задачей справляются регулярные выражения.
Синтаксис регулярных выражений
Для сокращения размеров регулярных выражений, Perl использует специальные символы. Таблица содержит список некоторых из символов, используемых скриптами языка Perl в регулярных выражениях.
Символ | Описание | . | Соответствует любому символу (за исключением символа новой строки) | (..) | Группирует последовательность элементов | + | Удовлетворяет предыдущему образцу один или большее количество раз | ? | Удовлетворяет образцу нуль или один раз | * | Соответствует образцу один или нуль раз | [...] | Соответствует символу из заданного множества | [^...] | Соответствует символу из множества, полученного отрицанием | (...|...|...) | Соответствует одной из альтернатив | ^ | Соответствует началу строки |
$ | Соответствует образцу в конце строки | {n,m} | Соответствует образцу от n до m раз | {n} | Соответствует образцу точно n раз | {n,} | Соответствует образцу минимум n раз | \n\t etc. | Соответствует знаку новой линии, символу табуляции и т. д. | \b | Соответствует на границе слова | \B | Соответствует внутри границ слова | \d | Соответствует цифре | \D | Соответствует не цифре | \s | Соответствует пробелу | \S | Соответствует не пробелу | \w | Соответствует букве или цифре | \W | Соответствует символу, не являющемуся ни буквой, ни цифрой |
Perl помещает регулярные выражения (образцы, шаблоны) в слэши, т. е. в наклонные черточки, например, в виде /pattern/. Следующий фрагмент программы иллюстрирует регулярные выражения языка Perl:
# the following regular expressions are true if: /ig/ # string contains "ig" /(b|d|f)ig/ # string contains "big", "dig" or "fig" /[0-9]+/ # string contains a number /[A-Za-z][A-Za-a0-9_]*/ # string contains an identifier
Если эти выражения кажутся вам бессмысленными, не беспокойтесь. В этой главе мы собираемся рассмотреть несколько регулярных выражений. Сейчас просто запомните, что Perl помещает регулярные выражения между двумя наклонными чертами-слэшами, как показано выше.
1 2 3
8 8 8
| |