Первая группа, часть, где вы пытаетесь сопоставить адрес, - [A-Z][a-z]*
, это означает одну заглавную букву, за которой следуют любые строчные буквы. Скорее всего, вам нужна любая прописная или строчная буква или пробел: [A-Za-z ]*
. Также обратите внимание, что точки во второй группе означают любой символ, а не буквальный .
, поэтому вам нужно избегать его. Решение будет выглядеть так:
>>> re.search(r'\d+\s?([A-Za-z ]*)\s+(Rd|Dr|Ave|St)\.', 'Meet me at 201 South First St. at noon')[1]
'South First'
Или просто используйте .
, чтобы принять что угодно.
>>> re.search(r'\d+\s?(.*?)\s+(Rd|Dr|Ave|St)\.', 'Meet me at 201 South First St. at noon')[1]
'South First'