Не работает регулярное выражение из переменной в 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 шт):
Если я правильно понял проблему, то нужно заменить это
str_date = f"""r'({day_today})'"""
на это
str_date = fr'({day_today})'
Хотя не очень понятно, зачем вам здесь вообще raw-строки, если у вас в этой строке нет никаких спецсимволов.
Неверно составлен паттерн в 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('Есть')