正则表达式只选择邮政编码

时间:2016-10-16 00:54:53

标签: regex

,Ray Balwierczak,2017年4月11日,895 Forest Hill Rd,Apalachin,NY,13732,y ,,

我想从线上只选择13732。我想出了这个正则表达式

(\ d)(\ S * \ d +)*(\,Y ,,)

但它也选择了,y ,,如果我从正则表达式中删除那部分,正则表达式也会对日期有效。请帮助我。

2 个答案:

答案 0 :(得分:2)

通常,如果您希望匹配某些内容而不捕获它,请使用零长度环视(前瞻或后瞻)。在您的情况下,您可以使用前瞻:

(\d)(\s*\d+)*(?=\,y,,)

语法(?=<stuff>)表示&#34;后跟<stuff>,而不匹配&#34;。

有关外观的更多信息,请参阅this tutorial

答案 1 :(得分:0)

正则表达式: \D*(\d{5})\D*

说明:匹配两侧零个或多个非数字包围的5位数字。然后,您可以提取包含匹配项的组。

python中的代码:

import re
string = ",Ray Balwierczak,4/11/2017,,895 Forest Hill Rd,Apalachin,NY,13732,y,,"
search = re.search("\D*(\d{5})\D*", string)
print search.group(1)

<强>输出: 13732