⚡ Краткий справочник
re.findall(r"\d+", text) — найти все числа.
re.sub(r"\s+,\s+", ", ", text) — нормализовать пробелы вокруг запятой.
re.split(r"[;,\s]+", text) — разбить по нескольким разделителям.
nonlocal name — изменить переменную внешней функции.
func.__closure__ — кортеж ячеек захваченных переменных.
Функции модуля re
| Функция | Что делает | Пример |
re.search(p, s) | Первое совпадение в любой части строки; возвращает Match | re.search(r"\d+", "a1b2") |
re.match(p, s) | Совпадение только в начале строки | re.match(r"\d+", "123abc") |
re.findall(p, s) | Список всех совпадений | re.findall(r"\d+", "a1b2") |
re.finditer(p, s) | Итератор Match для всех совпадений | for m in re.finditer(r"\d+", s): |
re.sub(p, repl, s) | Заменить совпадения | re.sub(r"\d+", "#", "a1b2") |
re.split(p, s) | Разделить строку по шаблону | re.split(r"[,;]", "a,b;c") |
re.compile(p) | Скомпилировать шаблон | pattern = re.compile(r"\d+") |
Специальные символы регулярных выражений
| Символ | Значение | Пример |
\d | Цифра | r"\d+" |
\D | Не цифра | r"\D+" |
\w | Словесный символ | r"\w+" |
\W | Не словесный символ | r"\W+" |
\s | Пробел | r"\s+" |
\S | Не пробел | r"\S+" |
. | Любой символ, кроме \n | r"a.b" |
^ | Начало строки | r"^Start" |
$ | Конец строки | r"end$" |
\b | Граница слова | r"\bword\b" |
\B | Не граница слова | r"\B\d+\B" |
Квантификаторы
| Запись | Значение | Пример |
+ | 1 и более | r"\d+" |
* | 0 и более | r"report\d*.txt" |
? | 0 или 1 | r"report\d?.txt" |
{n} | Ровно n | r"\d{3}" |
{n,} | n и более | r"ID\d{2,}" |
{n,m} | От n до m | r"\d{1,3}" |
*?, +?, {n,m}? | Ленивые версии | r"<.*?>" |
Флаги
| Флаг | Значение |
re.IGNORECASE / re.I | Регистронезависимый поиск |
re.MULTILINE / re.M | ^ и $ работают для каждой строки |
re.DOTALL / re.S | Точка . совпадает и с \n |
Ключевые слова Python
| Ключевое слово | Описание | Пример |
nonlocal | Связать имя с ближайшей внешней функцией | nonlocal count |
global | Связать имя с глобальной областью | global total |
lambda | Анонимная функция | lambda x: x * 2 |
Атрибуты функций
| Атрибут | Описание | Пример |
func.__name__ | Имя функции | 'multiplier' |
func.__doc__ | Строка документации | 'Factory function.' |
func.__closure__ | Кортеж ячеек замыкания или None | (<cell at ...>,) |
cell.cell_contents | Значение в ячейке замыкания | cell.cell_contents |
Стандартная библиотека
| Функция/класс | Описание | Пример |
functools.partial(func, *args, **kwargs) | Фиксирует часть аргументов функции | partial(round, ndigits=2) |
pathlib.Path | Объектно-ориентированная работа с путями | Path("data/file.txt") |
Правила использования
- Регулярные выражения всегда пишите в сырых строках
r"...", чтобы избежать двойного экранирования.
- Если один шаблон используется много раз, скомпилируйте его через
re.compile.
nonlocal поднимается только до ближайшей внешней функции, не до глобальной области.
- Если переменная только читается,
nonlocal не нужен.
- Замыкание «живёт», пока живёт возвращённая внутренняя функция.
Проверить по документации: полный список синтаксиса регулярных выражений — в
документации re.