正则表达式获取美国邮政编码

how*_*his 4 python regex

如何从以下字符串中"提取"邮政编码(美国)?

import re
address = "Moab, UT 84532"
postal_code = re.match('^\d{5}(-\d{4})?$', address)
print postal_code
Run Code Online (Sandbox Code Playgroud)

sbe*_*rry 9

首先,您使用匹配,它只匹配字符串的开头:请参阅http://docs.python.org/library/re.html#matching-vs-searching

此外,即使您使用搜索,您也不会抓住包含保证在那里的5位数的组.

最后,即使您使用搜索,使用carat ^启动正则表达式也会强制它从头开始搜索,这显然不适用于您的情况.

>>> postal_code = re.search(r'.*(\d{5}(\-\d{4})?)$', address)
>>> postal_code.groups()
('84532', None)
Run Code Online (Sandbox Code Playgroud)


Mat*_*ani 5

假设邮政编码始终为5位数(在美国是否这样?)

re.match('\d{5}$', address)
Run Code Online (Sandbox Code Playgroud)

会做。

评论对比赛和搜索是正确的,如果我想包括额外的4个字符:

re.search('\d{5}(-\d{4})?$', address)
Run Code Online (Sandbox Code Playgroud)

应该这样做。