使用Regex-Python27匹配精确的数字和单词数
我有这根绳子使用Regex-Python27匹配精确的数字和单词数,python,regex,python-2.7,Python,Regex,Python 2.7,我有这根绳子 P O BOX 32370, CA 92263 这个正则表达式\w{2}\d{5} 但它以粗体匹配了两个文本。“POBOX 32370,CA 92263” 实际上我想提取州和邮政编码 我想抓取文本开头和一个空格,然后是精确的2个字母,然后是一个空格,然后是精确的5个数字。您可以添加单词边界\b,以确保模式没有前导或尾随单词字符(字母数字和下划线): 您可以添加单词边界\b,以确保模式没有前导或尾随单词字符(字母数字和下划线): 要获取文本开头和空格,请精确选择2个字母表,然后选择
P O BOX 32370, CA 92263
这个正则表达式\w{2}\d{5}
但它以粗体匹配了两个文本。“POBOX 32370,CA 92263”
实际上我想提取州和邮政编码
我想抓取文本开头和一个空格,然后是精确的2个字母,然后是一个空格,然后是精确的5个数字。您可以添加单词边界
\b
,以确保模式没有前导或尾随单词字符(字母数字和下划线):
您可以添加单词边界
\b
,以确保模式没有前导或尾随单词字符(字母数字和下划线):
要获取文本开头和空格,请精确选择2个字母表,然后选择一个
空格,然后是精确的5位数
不幸的是,此模式\b\w{2}\d{5}\b
也会在字符串中找到匹配项,例如“po BOX 32370,2A 92263”
,给出的结果不符合您的要求\w
-匹配所有字母数字字符。要提取状态,邮政编码使用以下方法和and(获取匹配的所有命名子组)方法: 要获取文本开头和空格,请精确选择2个字母表,然后选择一个 空格,然后是精确的5位数 不幸的是,此模式
\b\w{2}\d{5}\b
也会在字符串中找到匹配项,例如“po BOX 32370,2A 92263”
,给出的结果不符合您的要求\w
-匹配所有字母数字字符。要提取状态,邮政编码使用以下方法和and(获取匹配的所有命名子组)方法:
您似乎在单词边界之后,请使用
\b\w{2}\d{5}\b
。您似乎在单词边界之后,请使用\b\w{2}\d{5}\b
。谢谢,我如何在\d{5}\b
中添加条件以获取4或5个数字?可能?您可以在{}
中指定下限,如\d{4,5}\b
。这与4或5位数字匹配。谢谢,如何在\d{5}\b
中添加条件以获取4或5位数字?可能?您可以在{}
中指定下限,如\d{4,5}\b
。这与4或5位数字匹配。
import re
re.findall(r"\b\w{2} \d{5}\b", "P O BOX 32370, CA 92263")
#['CA 92263']
s = 'P O BOX 32370, CA 92263'
m = re.search(r'\b(?P<state>[a-zA-Z]{2}) (?P<zip_code>\d{5})\b', s)
result = m.groupdict() if m else ''
print(result)
{'zip_code': '92263', 'state': 'CA'}