Регулярные выражения (regex) являются мощным инструментом для поиска шаблонов и извлечения данных при обработке текста. Модуль re
в Python предоставляет обширный набор функций для работы с регулярными выражениями. Эта статья погружает в синтаксис регулярных выражений в Python, сопровождаемая практическими примерами для лучшего понимания концепций.
Синтаксис Регулярных Выражений
Регулярные выражения используют последовательность символов для определения шаблона поиска. Вот быстрый обзор некоторых общих элементов синтаксиса regex в Python:
-
.
(Точка): Соответствует любому одиночному символу, кроме новой строки' '
. -
^
(Каретка): Соответствует началу строки. -
$
(Доллар): Соответствует концу строки. -
*
(Звездочка): Соответствует 0 или более повторений предыдущего элемента. -
+
(Плюс): Соответствует 1 или более повторений предыдущего элемента. -
?
(Вопросительный знак): Соответствует 0 или 1 повторению предыдущего элемента. -
{m,n}
(Фигурные скобки): Соответствует от m до n повторений предыдущего элемента. -
[]
(Квадратные скобки): Соответствует любому одиночному символу, содержащемуся в скобках. -
|
(Палка): Действует как логическое ИЛИ между выражениями. -
()
(Круглые скобки): Группирует шаблоны вместе.
Ниже представлена таблица, суммирующая эти элементы:
Символ | Описание |
---|---|
. |
Соответствует любому символу, кроме новой строки |
^ |
Соответствует началу строки |
$ |
Соответствует концу строки |
* |
Соответствует 0 или более повторений |
+ |
Соответствует 1 и более повторениям |
? |
Соответствует 0 или 1 повторению |
{m,n} |
Соответствует от m до n повторений |
[] |
Соответствует любому символу в скобках |
` | ` |
() |
Группирует шаблоны |
Практические Примеры
Давайте применим эти элементы на практических примерах с использованием модуля re
в Python:
- Нахождение всех вхождений 'a' в строке:
import re
re.findall('a', 'Mary had a little lamb')
- Поиск любого символа между 'a' и 'z':
re.findall('[a-z]', 'Hello World!')
- Соответствие любой цифре в строке:
re.findall('\d', 'The room number is 42.')
- Поиск трех последовательных цифр:
re.findall('\d{3}', 'Call 911 for emergency')
- Поиск слов, начинающихся с 'S':
re.findall(r'S\w+', 'The Sun is shining in the Sky.')
- Соответствие слова в начале строки:
re.match('^Hello', 'Hello, world!')
- Поиск последовательностей символов, отличных от пробелов:
re.findall('\S+', 'Hello, world! How are you?')
- Замена всех цифр на решетку (#):
re.sub('\d', '#', 'Password123')
- Разделение строки по любым пробельным символам:
re.split('\s+', 'Split this string by spaces')
- Проверка, заканчивается ли строка на 'world':
bool(re.search('world$', 'Hello, world'))
Эти примеры демонстрируют универсальность и мощь регулярных выражений в Python для различных задач обработки текста. Освоив синтаксис и применяя его на практических примерах, вы можете использовать регулярные выражения для эффективного поиска, сопоставления и манипулирования строками в ваших проектах на Python.
Пишите вместе с нами!
Вы можете внести свой вклад в статьи о Python на GitHub: создайте Fork, внесите правки и отправьте нам Pull request.