Извлечение подстроки из строки
Как с помощью python re, извлечь из строки подстроку начинающуюся с цифры и заканчивающуюся на цифру, с учетом пробелов?
orig_str = "Произведено 3 июля 2010 в Санкт-Петербурге"
Хочу получить: "23 июля 2010"
Ответы (2 шт):
Для надежного поиска нужно не начало/конец описывать, а полностью максимально конкретно описать структуру искомой подстроки, например, условно: одна или две цифры, пробел, несколько букв, пробел, 4 цифры (r"\d{1,2} \w+ \d{4}"). Если может быть несколько пробелов и могут быть другие пробельные символы (например, табы), то пробелы нужно заменить на \s+.
В идеале в средней части стоит перечислить все месяцы, тогда не будет матчиться на два числа с произвольным словом между ними:
import re
orig_str = "Произведено 3 июля 2010 в Санкт-Петербурге"
result = re.search(r"\d{1,2} (января|февраля|марта|апреля|июня|июля|августа|сентября|октября|декабря) \d{4}", orig_str)
print(result.group(0)) # 3 июля 2010
\d{1,2}\D+\d{4}
\d - диапазон чисел от 0-9
{1,2} - квантификатор захвата одной или двух цифр из диапазона
\D - любой символ отличный от цифры
+ - квантификатор 1 и более совпадение захвата
\d - см. выше
{4} - квантификатор захватана четырех цифр