Готовые классы: \d, \w, \s и их заглавные версии
Запоминаем короткие обозначения для самых частых наборов символов.
Готовый класс — встроенное сокращение для популярного набора символов, например
\dдля любой цифры.
Три главных шортката
Писать [0-9] каждый раз неудобно, поэтому для частых наборов есть короткие обозначения:
| Класс | Значит | Эквивалент |
\d | любая цифра | [0-9] |
\w | буква, цифра или подчёркивание | [a-zA-Z0-9_] (плюс буквы Unicode) |
\s | пробельный символ | пробел, таб \t, перенос \n |
import re
print(re.findall(r"\d+", "Год 2024, месяц 06"))
print(re.findall(r"\w+", "hello_world 42 ага"))
print(re.findall(r"\S+", "a b\tc"))
Вывод:
['2024', '06'] ['hello_world', '42', 'ага'] ['a', 'b', 'c']
Обратите внимание: \w в Python по умолчанию включает буквы Unicode, поэтому русское «ага» тоже поймалось. А \S (непробельные) разбил строку по пробелам и табу.
Заглавные версии — отрицание
Заглавная буква инвертирует класс — это «всё, кроме»:
\D— любой нецифровой символ (как[^0-9]).\W— любой символ, не являющийся буквой/цифрой/подчёркиванием.\S— любой непробельный символ.
import re
print(re.findall(r"\D+", "abc123def456")) # куски без цифр
print(re.findall(r"\w+", "один-два, три")) # слова
print(re.findall(r"\W+", "один-два, три")) # разделители
Вывод:
['abc', 'def'] ['один', 'два', 'три'] ['-', ', ']
Практичный приём: схлопнуть пробелы
Класс \s с квантором + легко нормализует пробелы — заменяет любые их скопления на один:
import re
text = "много пробелов\tи\nтабов"
print(re.sub(r"\s+", " ", text))
Вывод:
много пробелов и табов
Здесь \s+ поймал и группы пробелов, и табуляцию, и перенос строки — всё стало одиночным пробелом.
Готовые классы внутри [...]
Шорткаты можно класть и в свой класс: [\d.] — это «цифра или точка», [\w-] — «буква/цифра или дефис». Это помогает собирать паттерны вроде дат или дробных чисел.
Итог
\d— цифра,\w— буква/цифра/подчёркивание,\s— пробельный символ.- Заглавные
\D \W \S— отрицание соответствующих классов. - В Python
\wпо умолчанию включает Unicode-буквы (кириллицу). re.sub(r"\s+", " ", text)— типовой приём нормализации пробелов.