正则表达式匹配街道地址:适配含斜杠门牌号的方案
适配含斜杠门牌号的地址提取正则修改方案
原需求为提取文本中从一个街道门牌号到下一个门牌号之间的地址内容,原使用的Python正则脚本如下:
import re pattern = r'(\d+[^0-9]+)(?!\d)' # 指定搜索模式 streetSuburbJob = re.findall(pattern, text) # 返回匹配到的字符串列表
当前正则无法适配含斜杠的门牌号(如3/40A)的匹配场景,可通过以下方式修改正则:
修改后的正则及脚本
import re pattern = r'(\d+(?:/\d+[A-Za-z]?)?[^0-9]+)(?!\d)' # 适配带斜杠的门牌号 streetSuburbJob = re.findall(pattern, text)
修改说明
- 新增非捕获分组
(?:/\d+[A-Za-z]?)?,用于匹配门牌号中可选的斜杠后缀部分:/\d+匹配斜杠加数字(如/40)[A-Za-z]?匹配可选的字母后缀(如A)- 末尾的
?表示整个斜杠后缀分组是可选的,兼容普通门牌号(如123)和带斜杠的门牌号(如3/40A)
- 保留原有的
[^0-9]+匹配门牌号后的非数字内容,确保提取到下一个门牌号之前的完整地址段
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

