Регулярные выражения (regex)*
Это шаблоны соответствия текста, описанные в формальном синтаксисе. Шаблоны интерпретируются как набор инструкций, которые затем выполняются со строкой в качестве входных данных для создания соответствующего подмножества или модифицированной версии оригинала. Регулярные выражения могут включать в себя буквальное сопоставление текста, повторение, ветвление и другие сложные правила. Регулярные выражения обычно используются в приложениях, которые требуют тонкую обработку текста.
Инструмент для работы с текстом
Позволяют искать, извлекать и манипулировать текстовыми данными на основе заданных шаблонов
В Python регулярные выражения реализованы в модуле 're'
Вот несколько основных понятий и примеров использования регулярных выражений:
Символы и метасимволы (символы имеющие специальное значение):
.
: Соответствует любому символу, кроме новой строки.*
: Соответствует нулю или более повторениям предыдущего символа.+
: Соответствует одному или более повторениям предыдущего символа.?
: Соответствует нулю или одному повторению предыдущего символа.[]
: Символьный класс, соответствует любому из перечисленных символов. Например,[aeiou]
соответствует любой гласной букве.[^]
: Инвертированный символьный класс, соответствует любому символу, который не находится в перечисленных скобках.|
: ИЛИ, соответствует одному из двух выражений. Например,cat|dog
соответствует "cat" или "dog".
Специальные последовательности:
\d
: Соответствует любой цифре (эквивалентно[0-9]
).\D
: Соответствует любому символу, который не является цифрой.\w
: Соответствует любой букве или цифре (эквивалентно[a-zA-Z0-9]
).\W
: Соответствует любому символу, который не является буквой или цифрой.\s
: Соответствует любому пробельному символу (пробел, табуляция, новая строка).\S
: Соответствует любому символу, который не является пробельным.
Группировка и квантификация (поиск последовательностей):
()
: Группирует выражение.{n}
: Соответствует ровно n повторениям предыдущего символа.{n, m}
: Соответствует от n до m повторений предыдущего символа.{n,}
: Соответствует n или более повторениям предыдущего символа.^
: Соответствует началу строки.$
: Соответствует концу строки.
Примеры использования:
import re
# Поиск слова в строке
text = "Привет, мир!"
pattern = r"мир"
match = re.search(pattern, text)
if match:
print("Найдено совпадение:", match.group())
else:
print("Совпадений не найдено")
# Проверка, является ли строка числом:
text = "12345"
pattern = r"^\d+$"
if re.match(pattern, text):
print("Строка является числом")
else:
print("Строка не является числом")
# Разделение строки на слова:
text = "Привет, мир! Как дела?"
words = re.split(r"\W+", text) # Разделяем по не-буквенным символам
print(words)
# Поиск числа в строке
text = "Ваш заказ №12345 готов."
match = re.search(r'\d+', text)
if match:
print("Найдено число:", match.group())
# Поиск email-адреса в тексте
text = "Мой email: example@mail.com"
match = re.search(r'\w+@\w+\.\w+', text)
if match:
print("Найден email:", match.group())
# Разделение строки по запятой и пробелу
text = "apple, banana, cherry"
words = re.split(r',\s*', text)
print("Разделенные слова:", words)
# Замена слова
text = "Интересный интерфейс"
new_text = re.sub(r'интер', 'экстр', text, flags=re.IGNORECASE)
print("Замененный текст:", new_text)
~# Найдено число: 12345
~# Найден email: example@mail.com
~# Разделенные слова: ['apple', 'banana', 'cherry']
~# Замененный текст: экстресный экстрфейс
Практика
Повторите примеры из урока, проанализируйте результат
Last updated