"?» Предыдущий фрагмент либо присутствует, либо отсутствует
«{m,n}» Повторение предыдущего фрагмента от m до n раз включительно (жадное)
«[…]» Любой символ из набора в скобках. Можно задавать диапазоны символов с идущими подряд кодами, например: a–z
«[^…]» Любой символ не из набора в скобках
"\" Обратная косая черта отменяет специальное значение следующего за ней символа
"|" Фрагмент справа или фрагмент слева
"*?» Повторение фрагмента нуль или более раз (не жадное)
«+?» Повторение фрагмента один или более раз (не жадное)
«{m,n}?» Повторение предыдущего фрагмента от m до n раз включительно (не жадное)
Если A и B — регулярные выражения, то их конкатенация AB является новым регулярным выражением, причем конкатенация строк a и b будет удовлетворять AB, если a удовлетворяет A и b удовлетворяет B. Можно считать, что конкатенация — основной способ составления регулярных выражений.
Скобки, описанные ниже, применяются для задания приоритетов и выделения групп (фрагментов текста, которые потом можно получить по номеру или из словаря, и даже сослаться в том же регулярном выражении).
Алгоритм, который сопоставляет строки с регулярным выражением, проверяет соответствие того или иного фрагмента строки регулярному выражению. Например, строка «a» соответствует регулярному выражению «[a–z]», строка «fruit» соответствует «fruit|vegetable», а вот строка «apple» не соответствует шаблону «pineapple».
В таблице ниже вместо регвыр может быть записано регулярное выражение, вместо имя — идентификатор, а флаги будут рассмотрены ниже.
Обозначение Описание
«(регвыр)» Обособляет регулярное выражение в скобках и выделяет группу
«(?:регвыр)» Обособляет регулярное выражение в скобках без выделения группы
«(?=регвыр)» Взгляд вперед: строка должна соответствовать заданному регулярному выражению, но дальнейшее сопоставление с шаблоном начнется с того же места
«(?!регвыр)» То же, но с отрицанием соответствия
«(?<=регвыр)» Взгляд назад: строка должна соответствовать, если до этого момента соответствует регулярному выражению. Не занимает места в строке, к которой применяется шаблон. Параметр регвыр должен быть фиксированной длины (то есть, без «+» и "*")
«(?
«(?P<���имя>регвыр)» Выделяет именованную группу с именем имя
«(?P=имя)» Точно соответствует выделенной ранее именованной группе с именем имя
«(?#регвыр)» Комментарий (игнорируется)
«(?(имя)рв1|рв2)» Если группа с номером или именем имя оказалась определена, результатом будет сопоставление с рв1, иначе — c рв2. Часть |рв2 может отсутствовать
«(?флаг)» Задает флаг для всего данного регулярного выражения. Флаги необходимо задавать в начале шаблона
В таблице ниже описаны специальные последовательности, использующие обратную косую черту:
Последовательность Чему соответствует
"\1» — "\9» Группа с указанным номером. Группы нумеруются, начиная с 1
"\A» Промежуток перед началом всей строки (почти аналогично "^")
"\Z» Промежуток перед концом всей строки (почти аналогично "$")
"\b» Промежуток между символами перед словом или после него
"\B» Наоборот, не соответствует промежутку между символами на границе слова
"\d» Цифра. Аналогично «[0–9]»
"\s» Любой пробельный символ. Аналогично «[\t\n\r\f\v]»
"\S» Любой непробельный символ. Аналогично «[^\t\n\r\f\v]»
"\w» Любая цифра или буква (зависит от флага LOCALE)
"\W» Любой символ, не являющийся цифрой или буквой (зависит от флага LOCALE)
Флаги, используемые с регулярными выражениями:
Листинг
«(?i)», re.I, re.IGNORECASE
Сопоставление проводится без учета регистра букв.
Листинг
«(?L)», re.L, re.LOCALE
Влияет на определение буквы в "\w», "\W», "\b», "\B» в зависимости от текущей культурной среды (locale).
Листинг
«(?m)», re.M, re.MULTILINE
Если этот флаг задан, "^" и "$" соответствуют началу и концу любой строки.
Листинг
«(?s)», re.S, re.DOTALL
Если задан, ".» соответствует также и символу конца строки "\n».
Листинг
«(?x)», re.X, re.VERBOSE
Если задан, пробельные символы, не экранированные в шаблоне обратной косой чертой, являются незначащими, а все, что расположено после символа "#", — комментарии. Позволяет записывать регулярное выражение в несколько строк для улучшения его читаемости и записи комментариев.
Листинг
«(?u)», re.U, re.UNICODE
В шаблоне и в строке использован Unicode.
Методы объекта–шаблона
В результате успешной компиляции шаблона функцией re.compile() получается шаблон–объект (он именуется SRE_Pattern), который имеет несколько методов, некоторые из них будут рассмотрены. Как обычно, подробности и информация о дополнительных аргументах — в документации по Python.
Читать дальше