Регулярные выражения regexp

с помощью re.search мне нужно вытащить из addresses все номера дома и квартир, и названия улиц и городов, я уже пол дня не понимаю как это сделать, смог вытащить только названия городов (и то не правильно) ИЛИ номера пример кода

import re

addresses = [
    ('Он проживал в городе Иваново на улице Наумова. '
     'Номер дома 125 был зеркальной копией его номера квартиры 521'),
    'Адрес: город Новосибирск, улица Фрунзе, дом 321, квартира 15.'
]

for address in addresses:
    # pattern = r'/d+'
    pattern = r'(Н.?[ув](\w+))'
    address_match = re.search(pattern, address)
    print(address_match)

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

Автор решения: Леонид

в итоге, решение такое:

import re

addresses = [
    ('Он проживал в городе Иваново на улице Наумова. '
     'Номер дома 125 был зеркальной копией его номера квартиры 521'),
    'Адрес: город Новосибирск, улица Фрунзе, дом 321, квартира 15.'
]

result = []

for address in addresses:
    pattern = f'город.? (?P<town>\w+).*улиц.? (?P<street>\w+).*дом.? (?P<house>\d+).*квартир.? (?P<apartment>\d+)'
    address_match = re.search(pattern, address)

    result.append(address_match.groups())

for row in result:
    print(*row)
→ Ссылка