Perl / 7. Поиск совпадений с использованием регулярных выражений

В предыдущей главе вы познакомились с регулярными выражениями. Теперь вы увидите, как они существуют в мире Perl.
Статьи раздела '7. Поиск совпадений с использованием регулярных выражений':
Автоматические переменные совпадения
Существуют еще три переменные поиска совпадений, которые «бесплатно» предоставляются в ваше распоряжение независимо от того, содержит шаблон сохраняющие круглые скобки или нет. К сожалению, эти переменные имеют довольно странные и...
Границы слов
Якорная привязка не ограничивается концами строки. Якорь границы слова, \b, совпадает на любой границе слова. Таким образом, /\bfred\b/ совпадет со словом fred, но не совпадает с frederick, alfred или manfred mann. Происходящее не...
Добавление пропусков (/x)
Третий модификатор позволяет включать в шаблон произвольные пропуски, упрощающие его чтение: /-?\d+\.?\d*/ # Что здесь творится? / -? \d+ \.? \d* /x # Немного лучше Так как модификатор /x позволяет включать пропуски в шабл...
Другие модификаторы
Наряду с уже рассмотренными модификаторами существует ряд других модификаторов режимов. Мы рассмотрим их по мере изложения материала. Вы можете найти информацию в man-странице perlop, а также в описаниях m// и других операторов ре...
Жизненный цикл переменных частичных совпадений
Переменные частичных совпадений обычно продолжают существовать до следующего успешного совпадения. Другими словами, неудачный поиск сохраняет предыдущие значения переменных, а при успешном поиске они сбрасываются. Это подразумевае...
Именованное сохранение
Вы можете сохранить части совпавшей строки при помощи круглых скобок, а затем использовать переменные $1, $2 и т. д. для работы с частичными совпадениями. Следить за этими нумерованными переменными и их содержимым непросто даже дл...
Интерполяция в шаблонах
Регулярные выражения поддерживают интерполяцию по правилам строк в кавычках (как если бы они были заключены в кавычки). Это позволяет писать короткие программы «в стиле grep» следующим образом: #!/usr/bin/perl -w my $what = "l...
Модификаторы
Справа от завершающего ограничителя регулярного выражения могут добавляться буквенные модификаторы, также называемые флагами. Они изменяют поведение оператора поиска. Поиск без учета регистра символов (/i) Чтобы при поиске и...
Несохраняющие круглые скобки
До настоящего момента мы рассматривали круглые скобки, которые «захватывали» части совпадения и сохраняли их в переменных в памяти. Но что, если круглые скобки должны использоваться только для группировки? Возьмем регулярное выраж...
Общие квантификаторы
Квантификатор в шаблоне обозначает некоторое количество повторений предшествующего элемента. Мы уже видели три квантификатора *, + и ?. Если ни один из них не подходит для ваших целей, используйте разделенные запятыми пары чисел в...
Объединение модификаторов
Если в одном шаблоне действует сразу несколько модификаторов, их можно перечислить друг за другом (в произвольном порядке): if (/barney.*fred/is) { # both /i and /s print "That string mentions Fred after Barney!\n"; } Расш...
Оператор привязки =~
Переменная $_ всего лишь используется по умолчанию; оператор привязки =~ приказывает Perl применить шаблон в правой части к строке в левой части (вместо переменной $_1). Пример: my $some_other = "I dream of betty rubble."; if...
Переменные совпадения
До настоящего момента круглые скобки в шаблонах использовались только для группировки частей выражения. Однако в действительности круглые скобки также активизируют память ядра регулярных выражений. В памяти хранятся части строки, ...
Поиск совпадения оператором m//
В предыдущей главе шаблоны заключались в пару символов /, например /fred/. Но в действительности эта запись всего лишь является сокращенной формой оператора m//. Как было показано ранее для оператора qw//, для строкового квотирова...
Примеры определения приоритетов
Если вам потребуется расшифровать сложное регулярное выражение, действуйте так, как действует Perl, и используйте таблицу приоритетов, чтобы разобраться в происходящем. Например, выражение /^fred|barney$/ вряд ли соответствует на...
Приоритеты
Мы рассмотрели целый ряд метасимволов и служебных конструкций; но в каком порядке они должны обрабатываться в регулярных выражениях? Ниже приведена таблица приоритетов, которая показывает, какие части шаблонов наиболее плотно «при...
Совпадение точки с любым символом (/s)
По умолчанию точка (.) не совпадает с символом новой строки; это вполне логично для большинства шаблонов, рассчитанных на поиск «в пределах одной логической строки». Если строковые данные могут содержать внутренние символы новой с...
Тестовая программа
Когда в ходе программирования на Perl программисту требуется напсать регулярное выражение, часто бывает трудно определить, что именно делает шаблон. Часто выясняется, что шаблон совпадает с большим или меньшим количеством символов...
Якоря
Если шаблон не совпадает в начале строки, по умолчанию ядро регулярных выражений Perl «перемещает» его по строке, пытаясь найти совпадение в другом месте. Однако выражение может содержать «якорные» символы, привязывающие шаблон к ...

Страницы: 1