2024-05-14 23:01:25 发布
网友
我试图使用正则表达式在字符串中找到英国邮政编码。
我已经在RegexBuddy中使用了正则表达式,请参见以下内容:
\b[A-Z]{1,2}[0-9][A-Z0-9]? [0-9][ABD-HJLNP-UW-Z]{2}\b
我有一堆地址,想从中获取邮政编码,例如:
123 Some Road Name Town, City County PA23 6NH
在Python中我该如何处理这个问题?我知道Python的re模块,但我正在努力使它工作。
re
干杯
欧洲经济论坛
用邮政编码PA23 6NH,PA2 6NH和PA2Q 6NH重复您的地址3次作为您的模式测试,并使用来自wikipedia的regex对您的代码进行测试。。
import re s="123 Some Road Name\nTown, City\nCounty\nPA23 6NH\n123 Some Road Name\nTown, City"\ "County\nPA2 6NH\n123 Some Road Name\nTown, City\nCounty\nPA2Q 6NH" #custom print re.findall(r'\b[A-Z]{1,2}[0-9][A-Z0-9]? [0-9][ABD-HJLNP-UW-Z]{2}\b', s) #regex from #http://en.wikipedia.orgwikiUK_postcodes#Validation print re.findall(r'[A-Z]{1,2}[0-9R][0-9A-Z]? [0-9][A-Z]{2}', s)
结果是
['PA23 6NH', 'PA2 6NH', 'PA2Q 6NH'] ['PA23 6NH', 'PA2 6NH', 'PA2Q 6NH']
两个正则表达式都给出相同的结果。
#!/usr/bin/env python import re ADDRESS="""123 Some Road Name Town, City County PA23 6NH""" reobj = re.compile(r'(\b[A-Z]{1,2}[0-9][A-Z0-9]? [0-9][ABD-HJLNP-UW-Z]{2}\b)') matchobj = reobj.search(ADDRESS) if matchobj: print matchobj.group(1)
示例输出:
[user@host]$ python uk_postcode.py PA23 6NH
试试看
import re re.findall("[A-Z]{1,2}[0-9][A-Z0-9]? [0-9][ABD-HJLNP-UW-Z]{2}", x)
您不需要
用邮政编码PA23 6NH,PA2 6NH和PA2Q 6NH重复您的地址3次作为您的模式测试,并使用来自wikipedia的regex对您的代码进行测试。。
结果是
两个正则表达式都给出相同的结果。
示例输出:
试试看
您不需要
相关问题 更多 >
编程相关推荐