Использование переменных внутри регулярного выражения Python
Быстрый ответ
Чтобы включить переменную в шаблон регулярного выражения на Python, используйте форматирование строк с помощью f-строк: f"шаблон{переменная}шаблон"
. Символы, которые имеют специальное значение в регулярных выражениях, следует экранировать:
import re
word = "пример"
regex = fr"\b{word}\b" # Префикс 'r' сохраняет символы обратного слеша
text = "Это просто еще один пример в тексте."
match = re.search(regex, text, re.IGNORECASE) # Поиск без учета регистра символов
if match:
found = match.group()
else:
found = None
В данном примере код осуществляет поиск определенного слова как отдельного элемента в text
.
Формирование регулярного выражения
Чтобы составить сложный шаблон, вы можете использовать следующие подходы:
re.compile()
позволяет заранее подготовить регулярное выражение, что наиболее эффективно при многократном использовании.- Объединение нескольких шаблонов с оператором
+
, а затем компиляция получившегося выражения, аналогично приготовлению сложного блюда из отдельных ингредиентов. - Использование
re.escape()
для экранирования спецсимволов помогает избежать ошибок в работе с особыми символами.
Чтобы проигнорировать регистр при поиске, просто добавьте соответствующий флаг:
pattern = fr"\b{re.escape(word)}\b"
regex = re.compile(pattern, re.IGNORECASE)
matches = regex.findall(text)
if matches:
found = matches
else:
found = None
Использование регулярных выражений в командной строке
Чтобы передавать переменные в скрипты из командной строки, удобно использовать sys.argv
:
import sys
import re
if len(sys.argv) > 1:
word = sys.argv[1] # Получаем аргумент из командной строки
pattern = re.compile(rf"\b{re.escape(word)}\b")
# Далее скрипт готов к использованию `re.search()` и других методов
Визуализация 🎨
В представлении будет полезно изобразить шаблон регулярного выражения как чертеж 📝, а переменную — как строительный материал 🧱:
Чертеж 📝 до использования материала 🧱: "Создать * из кирпичей"
Добавим материал в шаблон:
material = "стена" # Выбранный нами материал 🧱
pattern = f"Создать {material} из кирпичей" # Чертеж 📝 с указанием материала 🧱
Теперь чертеж 📝 включает в себя конкретный материал — стену:
"Создать **стену** из кирпичей"
# Чертеж становится детализированным и конкретным.
Таким образом, исходный чертеж обогащается деталями и превращается в точный план 🎯.
Путь к мастерству в регулярных выражениях
- Проверяйте все несколько раз: тщательно тестируйте свой подход на разных вариантах.
- Платформы вроде regex101 помогут в отладке и демонстрации регулярных выражений. Они являются мощным инструментом для этоц целей.
- Не забывайте обращаться к документации Python documentation. Она великолепный гид по вселенной регулярных выражений.
Полезные материалы
- re — Операции с регулярными выражениями — Документация Python 3.12.2 — официальное руководство Python по работе с регулярными выражениями.
- Руководство по регулярным выражениям в Python — подробное изложение принципов работы с регулярными выражениями.
- Regular Expressions: Regex in Python (Part 1) – Real Python — основной курс от Real Python по использованию модуля
re
. - regex101: создание, тестирование и отладка regex — интерактивный ресурс для проверки регулярных выражений.
- Pythex: регулярные выражения Python — удобный инструмент для онлайн-тестирования ваших регулярных выражений.
- Модуль Python re – Использование регулярных выражений на Python – Поддержка Regex — обзор возможностей работы с регулярными выражениями в Python.