Не работает регулярное выражение из переменной в python

Почему-то так работает

result = re.search(r'(6)', u_values)

А так нет

current_datetime = datetime.datetime.now()
day_today = current_datetime.day
day_today = str(day_today)
str_date = f"""r'({day_today})'"""

result = re.search(str_date, u_values)

Второй день бьюсь. Здесь находил варианты, тоже не срабатывают. Что не так?


Ответы (2 шт):

Автор решения: Xander

Если я правильно понял проблему, то нужно заменить это

str_date = f"""r'({day_today})'"""

на это

str_date = fr'({day_today})'

Хотя не очень понятно, зачем вам здесь вообще raw-строки, если у вас в этой строке нет никаких спецсимволов.

→ Ссылка
Автор решения: Viewed

Неверно составлен паттерн в str_date. И лишних нагромождений много.

Ошибка в следующей строке. Вы встраиваете модификатор r в саму строку. Плюс к этому за зря используете тройные кавычке и вообще эта строка бессмысленна для задачи.

str_date = f"""r'({day_today})'"""
# "r'(6)'"

Вы можете сократить четыре строки преобразований в одну

string = 'abc 6 cba 7'
day = str(datetime.now().day)
result = re.search(day, string)

И в целом использование регулярных выражений под вопросом. Если вам нужно проверить наличие в строке числа текущего дня, то используйте, например, in.

if day in string:
    print('Есть')
→ Ссылка