Почему функция re.sub () возвращает пустую строку? - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть строка

string = '(month)April(year)'

Если я хочу использовать re.sub только в конце месяца, как бы я это сделал? До сих пор я использовал

re.sub(r'(.+)', '', string) 

, но я получаю полностью пустую строку

Ответы [ 2 ]

1 голос
/ 06 апреля 2020

Вы должны избегать скобок, в противном случае они считаются частью регулярного выражения. Нечто подобное делает свое дело:

string = '(month)April(year)'
re.sub(r'\(\w+\)', '', string)
# April

Смотрите также на https://regex101.com/r/vOjpRU/1

0 голосов
/ 06 апреля 2020

Если ваша строка всегда будет следовать этому фиксированному шаблону ( т.е. (month)April(year), (month)May(year), (month)June(year) et c.), Тогда я не вижу необходимости импортировать re Модуль просто для извлечения названия месяца, часть его. Простое нарезание должно сработать

string = '(month)April(year)'
name_of_the_month = string[7:-6]
print(name_of_the_month)  # Output: April

Редактировать:

Извините, я не читал ваш комментарий ранее о возможности использования в скобках слов, отличных от month и year. Нарезка не будет работать тогда. Вы все еще можете выполнить это без re, но это было бы довольно уродливо до go. Другие уже хорошо ответили, как использовать регулярные выражения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...