Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.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
Python 正则表达式查找紧跟在';之后的5位数字;,XX_Python_Regex_Python 3.7 - Fatal编程技术网

Python 正则表达式查找紧跟在';之后的5位数字;,XX

Python 正则表达式查找紧跟在';之后的5位数字;,XX,python,regex,python-3.7,Python,Regex,Python 3.7,我试图通过python正则表达式找到一种捕获5位数zipcode的方法;问题是我的文档中有多个5位数字不是Zipcode 我发现的唯一隔离它们的方法是如果,通过正则表达式;我可以使用以下作为句柄,紧跟州缩写so'5位,紧跟',XX' i、 e.,弗吉尼亚州23220 , VA 22801 在正则表达式后面使用正向查找: (?带正则表达式查找: import re s = 'some text , VA 22801 some other text 123' m = re.search(r'(?

我试图通过python正则表达式找到一种捕获5位数zipcode的方法;问题是我的文档中有多个5位数字不是Zipcode

我发现的唯一隔离它们的方法是如果,通过正则表达式;我可以使用以下作为句柄
,紧跟州缩写
so'5位,紧跟
',XX
'

i、 e.
,弗吉尼亚州23220

, VA 22801

在正则表达式后面使用正向查找:

(?带正则表达式查找:

import re

s = 'some text , VA 22801 some other text 123'
m = re.search(r'(?<=,\s[A-Z]{2}\s)\d{5}\b', s)
zip_code = m.group() if m else m
print(zip_code)   # 22801
重新导入
s='一些文本,VA 22801一些其他文本123'

m=重新搜索(r’(?更简单的是在
search

>>> text = 'some text, VA 20166 some other text 123'
>>> print re.search(r', [A-Z]{2} (\d{5})\b', text).group(1)
20166

使用
re.findall(r',[A-Z]{2}(\d{5})\b',text)[0]
您的正则表达式与
中的
12345
匹配,其中空格是换行符。这真的是您想要的吗?通常州和邮政编码在模式中仅由一个或多个空格分隔
城市,州邮政编码
@RonaldAaronson,您在说“这真的是你想要的吗?”。如果换行是一个问题,我会等待OPS的一个符号,当我说,“这真的是你想要的吗?”",我承认这是一个反问。所以这就是我的观点,即使我可能在猜测OP:OP试图找出邮政编码,这是5位数字。为此,他试图提供上下文,而上下文是一个事实,邮政编码是地址的一部分,地址的格式通常为
Name\nStreet Address\nCity、 州邮政编码。也就是说,城市、州和邮政编码始终在同一行。因此,邮政编码前面有一个,XX,其中XX是一个两个字母的州缩写。AttributeError:'NoneType'对象没有属性'group'@CaptainRon,看起来您测试的字符串不包含邮政编码,请参阅我的更新我想,\s+[A-Z]{2}\s+(\d{5})\b'
,即逗号后至少需要一个空格。我们的地址是
城市、州邮政编码
,如果只需要匹配一个邮政编码-
re。最后
是一项开销,
re.搜索
将是一种优化方法。我认为,与使用
\s
相比,您应该使用简单的空格字符,因为美国地址
城市,州邮政编码
,如纽约州斯普林菲尔德花园
11413'
总是在同一条线上,我相信OP试图通过寻找实际地址来为5位数的数字提供更多的上下文。@Ronaldaronson:谢谢你的评论。我根据你的好建议编辑了答案。
>>> text = 'some text, VA 20166 some other text 123'
>>> print re.search(r', [A-Z]{2} (\d{5})\b', text).group(1)
20166