Использование переменных внутри регулярного выражения Python

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Чтобы включить переменную в шаблон регулярного выражения на Python, используйте форматирование строк с помощью f-строк: f"шаблон{переменная}шаблон". Символы, которые имеют специальное значение в регулярных выражениях, следует экранировать:

Python
Скопировать код
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.

Пройдите тест и узнайте подходит ли вам сфера IT
Пройти тест

Формирование регулярного выражения

Чтобы составить сложный шаблон, вы можете использовать следующие подходы:

  1. re.compile() позволяет заранее подготовить регулярное выражение, что наиболее эффективно при многократном использовании.
  2. Объединение нескольких шаблонов с оператором +, а затем компиляция получившегося выражения, аналогично приготовлению сложного блюда из отдельных ингредиентов.
  3. Использование re.escape() для экранирования спецсимволов помогает избежать ошибок в работе с особыми символами.

Чтобы проигнорировать регистр при поиске, просто добавьте соответствующий флаг:

Python
Скопировать код
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:

Python
Скопировать код
import sys
import re

if len(sys.argv) > 1:
    word = sys.argv[1]  # Получаем аргумент из командной строки
    pattern = re.compile(rf"\b{re.escape(word)}\b")  
    # Далее скрипт готов к использованию `re.search()` и других методов

Визуализация 🎨

В представлении будет полезно изобразить шаблон регулярного выражения как чертеж 📝, а переменную — как строительный материал 🧱:

Markdown
Скопировать код
Чертеж 📝 до использования материала 🧱: "Создать * из кирпичей"

Добавим материал в шаблон:

Python
Скопировать код
material = "стена"  # Выбранный нами материал 🧱
pattern = f"Создать {material} из кирпичей"  # Чертеж 📝 с указанием материала 🧱

Теперь чертеж 📝 включает в себя конкретный материал — стену:

Markdown
Скопировать код
"Создать **стену** из кирпичей"

# Чертеж становится детализированным и конкретным.

Таким образом, исходный чертеж обогащается деталями и превращается в точный план 🎯.

Путь к мастерству в регулярных выражениях

  1. Проверяйте все несколько раз: тщательно тестируйте свой подход на разных вариантах.
  2. Платформы вроде regex101 помогут в отладке и демонстрации регулярных выражений. Они являются мощным инструментом для этоц целей.
  3. Не забывайте обращаться к документации Python documentation. Она великолепный гид по вселенной регулярных выражений.

Полезные материалы

  1. re — Операции с регулярными выражениями — Документация Python 3.12.2 — официальное руководство Python по работе с регулярными выражениями.
  2. Руководство по регулярным выражениям в Python — подробное изложение принципов работы с регулярными выражениями.
  3. Regular Expressions: Regex in Python (Part 1) – Real Python — основной курс от Real Python по использованию модуля re.
  4. regex101: создание, тестирование и отладка regex — интерактивный ресурс для проверки регулярных выражений.
  5. Pythex: регулярные выражения Python — удобный инструмент для онлайн-тестирования ваших регулярных выражений.
  6. Модуль Python re – Использование регулярных выражений на Python – Поддержка Regex — обзор возможностей работы с регулярными выражениями в Python.