帮我写一个python正则匹配地址的代码,满足如下几种规则即返回true 规则1.地址信息等值匹配(即直接比较匹配) 规则2.以xx省xx市或者xx市xx区 xx号楼或者xx号院或者xx号社区 xx号 规则3.以xx省xx市或者xx市xx区 xx小区或者xx座或者xx镇 xx号 规则4.以xx省xx市或者xx市xx区 xx街道(xx村)xx号
时间: 2023-08-20 09:55:34 浏览: 260
好的,下面是一个满足你所描述的四种规则的地址匹配代码:
```python
import re
def match_address(address):
pattern1 = r'^' + re.escape(address) + r'$' # 规则1:地址等值匹配
pattern2 = r'(?:.*省)?(?:.*市)?(?:.*区)?(?:.*楼|.*院|.*社区)?(?:.*号)$' # 规则2:以省市区楼号结尾
pattern3 = r'(?:.*省)?(?:.*市)?(?:.*区)?(?:.*小区|.*座|.*镇)?(?:.*号)$' # 规则3:以省市区小区号结尾
pattern4 = r'(?:.*省)?(?:.*市)?(?:.*区)?(?:.*街道(?:.*村)?)?(?:.*号)$' # 规则4:以省市区街道号结尾
if re.match(pattern1, address) or re.match(pattern2, address) \
or re.match(pattern3, address) or re.match(pattern4, address):
return True
else:
return False
# 测试地址
addresses = [
'江苏省南京市鼓楼区中央小区15号楼',
'北京市海淀区五道口大厦1号',
'上海市浦东新区张江高科技园区15号院',
'广东省深圳市福田区华强北街道101号',
'湖北省武汉市洪山区光谷软件园B栋102号',
'山东省青岛市黄岛区胶南市村委会3号'
]
for address in addresses:
if match_address(address):
print(f'{address} 匹配成功')
else:
print(f'{address} 匹配失败')
```
运行这段代码,将会输出以下结果:
```
江苏省南京市鼓楼区中央小区15号楼 匹配成功
北京市海淀区五道口大厦1号 匹配成功
上海市浦东新区张江高科技园区15号院 匹配成功
广东省深圳市福田区华强北街道101号 匹配成功
湖北省武汉市洪山区光谷软件园B栋102号 匹配成功
山东省青岛市黄岛区胶南市村委会3号 匹配成功
```
代码中使用了四个正则表达式模式,分别对应了四种匹配规则。通过遍历测试地址列表,对每个地址进行匹配,并根据匹配结果输出匹配成功或失败。
希望这个代码能满足你的需求!如果还有其他问题,请随时追问。
阅读全文