Как сопоставить - но не захватить - в регулярных выражениях Python?

У меня есть функция, выводящая на выходе «Вашингтон, округ Колумбия, США». Мне нужно захватить «Вашингтон, округ Колумбия», по причинам, которые связаны с тем, как я обрабатываю все остальные город в стране. (Примечание: это не то же самое, что и "округ Колумбия", мне нужно, чтобы запятая была между "Вашингтон" и "округ Колумбия", пробелы допустимы)

Я не могу хоть убей, придумайте, как это запечатлеть.

Вот что я пробовал:

    >>>location = "Washington D.C., DC, USA"

    >>>match = re.search(r'\w+\s(?:D\.C\.), \w\w(?=\W)', location).group()
    >>>match
    u'Washington D.C., DC'

Разве (?: ...) не должно просто совпадать (а не захватывать) "DC"?

Вот документы 2.7.2:

(?: ...) Версия обычных круглых скобок без записи. Соответствует любому регулярному выражению внутри круглых скобок, но подстрока, сопоставленная группой, не может быть получена после выполнения сопоставления или ссылки позже в шаблоне.

Что дает ??

Заранее спасибо!

11
задан Matt Parrilla 1 August 2011 в 22:42
поделиться