Язык программирования Python

Регулярные выражения


Рассмотренных стандартных возможностей для работы с текстом достаточно далеко не всегда. Например, в методах find() и replace() задается всего одна строка. В реальных задачах такая однозначность встречается довольно редко, чаще требуется найти или заменить строки, отвечающие некоторому шаблону.

Регулярные выражения (regular expressions) описывают множество строк, используя специальный язык, который сейчас и будет рассмотрен. (Строка, в которой задано регулярное выражение, будет называться шаблоном.)

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

>>> import re >>> pattern = r"[0-9]+" >>> number_re = re.compile(pattern) >>> number_re.findall("122 234 65435") ['122', '234', '65435']

В этом примере шаблон pattern описывает множество строк, которые состоят из одного или более символов из набора "0", "1" , ..., "9" . Функция re.compile() компилирует шаблон в специальный Regex-объект, который имеет несколько методов, в том числе метод findall() для получения списка всех непересекающихся вхождений строк, удовлетворяющих шаблону, в заданную строку.

То же самое можно было сделать и так:

>>> import re >>> re.findall(r"[0-9]+", "122 234 65435") ['122', '234', '65435']

Предварительная компиляция шаблона предпочтительнее при его частом использовании, особенно внутри цикла.

Примечание:

Следует заметить, что для задания шаблона использована необработанная строка. В данном примере она не требовалась, но в общем случае лучше записывать строковые литералы именно так, чтобы исключить влияние специальных последовательностей, записываемых через обратную косую черту.



Содержание раздела