Извлечение подстроки из строки

Как с помощью python re, извлечь из строки подстроку начинающуюся с цифры и заканчивающуюся на цифру, с учетом пробелов?

orig_str = "Произведено 3 июля 2010 в Санкт-Петербурге"

Хочу получить: "23 июля 2010"


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

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

Для надежного поиска нужно не начало/конец описывать, а полностью максимально конкретно описать структуру искомой подстроки, например, условно: одна или две цифры, пробел, несколько букв, пробел, 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
→ Ссылка
Автор решения: ipatev_nn
\d{1,2}\D+\d{4}

\d - диапазон чисел от 0-9
{1,2} - квантификатор захвата одной или двух цифр из диапазона
\D - любой символ отличный от цифры
+ - квантификатор 1 и более совпадение захвата
\d - см. выше {4} - квантификатор захватана четырех цифр

→ Ссылка