2024-09-27 19:37:27 发布
网友
我正在尝试使用正则表达式从文本中提取加拿大邮政编码
我从link尝试了这个正则表达式
pattern = "^(?!.*[DFIOQU])[A-VXY][0-9][A-Z].[0-9][A-Z][0-9]$" temp = 'Portland Street, Burnaby, BC V5E 1A1' re.search(pattern, temp) # returns None
我做错了什么
不是加拿大人,也不熟悉邮政编码,因此不保证:-)
import re pattern = "^(.*)((?!.*[DFIOQU])[A-VXY][0-9][A-Z].[0-9][A-Z][0-9]$)" temp = 'Portland Street, Burnaby, BC V5E 1A1' r = re.search(pattern, temp) print(r.groups())
这将产生:
('Portland Street, Burnaby, BC ', 'V5E 1A1')
(第二组中的邮政编码)
请注意,如果没有邮政编码,这可能会出问题,在这种情况下,您将只有一个组,所以您可以过滤这些组
re findall可能也非常有用,它会将所有匹配项编译成一个列表:
import re pattern = "(?!.*[DFIOQU])[A-VXY][0-9][A-Z].[0-9][A-Z][0-9](?<!\.)" temp = 'John Oliver 7111 Portland Street, Burnaby, BC V5E 1A1 Phone: 212-456-0781 Email: johnny@gmail.com' r = re.findall(pattern, temp) print(r)
Result
['V5E 1A1']
不是加拿大人,也不熟悉邮政编码,因此不保证:-)
这将产生:
(第二组中的邮政编码)
请注意,如果没有邮政编码,这可能会出问题,在这种情况下,您将只有一个组,所以您可以过滤这些组
re findall可能也非常有用,它会将所有匹配项编译成一个列表:
相关问题 更多 >
编程相关推荐