PERL: БИБЛИОТЕКА ПРОГРАММИСТА


PERL: БИБЛИОТЕКА ПРОГРАММИСТА - стр. 172


Иногда нужная строка находится прямо у вас перед глазами, а совпадение все равно не происходит

Ovmes are found typically in ovianes

Проблема в том, что вы мыслите категориями человеческого языка, а меха­низм поиска по шаблону — нет. Когда этот механизм получает шаблон /ovine/ и другую строку, в которой происходит поиск, он ищет в строке символ о , за кото­рым сразу же следует v , затем 1 , п и е Все, что находится до этой последо­вательности символов или после нее, не имеет значения.

Итак, выясняется, что шаблон находит совпадения там, где они не нужны, и не узнает то, что действительно нужно. Придется усовершенствовать его. Например, для поиска последовательности ovine или ovmes шаблон должен выглядеть при­мерно так:

if (Smeadow =~ /\bovinesAb/i)  {  print    Here be sheep1     }

Шаблон начинается со метасимвола \Ь, который совпадает только с границей слова. s? обозначает необязательный символ s — он позволяет находить как ovine, так и ovmes. Модификатор /i в конце шаблона означает, что поиск осуществляет­ся без учета регистра.

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

Освоить синтаксис поиска по шаблону не так уж сложно. Конечно, служебных символов много, но существование каждого из них объясняется вескими причи­нами. Регулярное выражение — это не просто беспорядочная груда знаков... это тщательно продуманная груда знаков! Если вы что-нибудь забыли, всегда можно


Введение   181

заглянуть в документацию. Сводка по синтаксису регулярных выражений имеет­ся в страницах руководстваperlre(i) nperlop(i), входящих в любую поставку Perl.

Три затруднения

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




- Начало -  - Назад -  - Вперед -