Я пытаюсь разобрать частично стандартизированный почтовый адрес на его компоненты, используя pyparsing
. Я хочу нежадно сопоставить название улицы, длина которого может составлять N токенов.
Например:
444 PARK GARDEN LN
Следует разобрать на:
number: 444
street: PARK GARDEN
suffix: LN
Как бы я сделал это с PyParsing? Вот мой исходный код:
from pyparsing import *
def main():
street_number = Word(nums).setResultsName('street_number')
street_suffix = oneOf("ST RD DR LN AVE WAY").setResultsName('street_suffix')
street_name = OneOrMore(Word(alphas)).setResultsName('street_name')
address = street_number + street_name + street_suffix
result = address.parseString("444 PARK GARDEN LN")
print result.dump()
if __name__ == '__main__':
main()
но когда я пытаюсь разобрать его, суффикс улицы поглощается жадным поведением синтаксического анализа по умолчанию.