Синтаксис регулярных выражений в Python почти такой же, как в Perl, grep и некоторых других инструментах. Часть символов (в основном буквы и цифры) обозначают сами себя. Строка удовлетворяет (соответствует) шаблону, если она входит во множество строк, которые этот шаблон описывает.
Здесь стоит также отметить, что различные операции используют шаблон по-разному. Так, search() ищет первое вхождение строки, удовлетворяющей шаблону, в заданной строке, а match() требует, чтобы строка удовлетворяла шаблону с самого начала.
Символы, имеющие специальное значение в записи регулярных выражений:
| "." | Любой символ |
| "^" | Начало строки |
| "$" | Конец строки |
| "*" | Повторение фрагмента нуль или более раз (жадное) |
| "+" | Повторение фрагмента один или более раз (жадное) |
| "?" | Предыдущий фрагмент либо присутствует, либо отсутствует |
| "{m,n}" | Повторение предыдущего фрагмента от m до n раз включительно (жадное) |
| "[...]" | Любой символ из набора в скобках. Можно задавать диапазоны символов с идущими подряд кодами, например: a-z |
| "[^...]" | Любой символ не из набора в скобках |
| "\" | Обратная косая черта отменяет специальное значение следующего за ней символа |
| "|" | Фрагмент справа или фрагмент слева |
| "*?" | Повторение фрагмента нуль или более раз (не жадное) |
| "+?" | Повторение фрагмента один или более раз (не жадное) |
| "{m,n}?" | Повторение предыдущего фрагмента от m до n раз включительно (не жадное) |
Если A и B - регулярные выражения, то их конкатенация AB является новым регулярным выражением, причем конкатенация строк a и b будет удовлетворять AB, если a удовлетворяет A и b удовлетворяет B. Можно считать, что конкатенация - основной способ составления регулярных выражений.
Скобки, описанные ниже, применяются для задания приоритетов и выделения групп (фрагментов текста, которые потом можно получить по номеру или из словаря, и даже сослаться в том же регулярном выражении).
| "(регвыр)" | Обособляет регулярное выражение в скобках и выделяет группу |
| "(?:регвыр)" | Обособляет регулярное выражение в скобках без выделения группы |
| "(?=регвыр)" | Взгляд вперед: строка должна соответствовать заданному регулярному выражению, но дальнейшее сопоставление с шаблоном начнется с того же места |
| "(?!регвыр)" | То же, но с отрицанием соответствия |
| "(?<=регвыр)" | Взгляд назад: строка должна соответствовать, если до этого момента соответствует регулярному выражению. Не занимает места в строке, к которой применяется шаблон. Параметр регвыр должен быть фиксированной длины (то есть, без "+" и "*") |
| "(?<!регвыр)" | То же, но с отрицанием соответствия |
| "(?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) |