Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Regex-Python27匹配精确的数字和单词数_Python_Regex_Python 2.7 - Fatal编程技术网

使用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 32370CA 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'}