Что такое регулярные выражения?

Регулярное выражение представляет собой шаблон, который либо совпадает, либо не совпадает в заданной строке. Другими словами, существует бесконечное множество возможных текстовых строк; заданный шаблон делит это бесконечное множество на две группы: тех строк, в которых это регулярное выражение совпадает, и тех, в которых оно не совпадает. Никаких почти-полных-или-очень-похожих совпадений не бывает; либо совпадение есть, либо его нет. Шаблон может совпадать в одной возможной строке, в двух или трех, в десятке или сотне или в бесконечном множестве строк. А может совпадать во всех строках, кроме одной, или кроме некоторых, или кроме бесконечного числа строк. Мы уже говорили о регулярных выражениях как о мини-программах, написанных на своем простом языке программирования. Простота языка объясняется тем, что написанные на нем программы решают всего одну задачу – они просматривают строку и решают: «Да, совпадение есть» или «Нет, совпадения нет». Вот и все.

Вполне возможно, что вы уже встречались с регулярными выражениями в команде UNIX grep, отбирающей текстовые строки по заданному критерию. Например, если вы хотите при помощи команды UNIX grep узнать, в каких строках заданного файла встречается слово flint, за которым в этой же строке следует слово stone, это делается примерно так:

$ grep 'flint.*stone' chapter*.txt
chapter3.txt:a piece of flint, a stone which may be used to start a fire by
striking
chapter3.txt:found obsidian, flint, granite, and small stones of basaltic
rock,
which
chapter9.txt:a flintlock rifle in poor condition.


The sandstone mantle held
several

Не путайте регулярные выражения с глобами – шаблонами командного процессора, используемыми при поиске файлов. Например, вводя типичный глоб *.pm в командном процессоре UNIX, вы найдете все файлы с расширением .pm. В предыдущем примере используется глоб chapter*.txt. (Возможно, вы заметили, что шаблон заключен в апострофы; это сделано для того, чтобы командный процессор не интерпретировал его как глоб.) Хотя в глобах используются те же символы, что и в регулярных выражениях, смысл у них совершенно иной.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Perl на эту тему:
Альтернатива
Группировка в шаблонах
Инвертированные сокращения
О метасимволах
Простые квантификаторы

Вернуться в раздел: Perl / 6. В мире регулярных выражений