Python中多正则模式组合匹配及地址建筑编号提取问题
地址信息提取解决方案
1. 匹配多种写法的区域信息
要兼容region、reg.、r-n这类区域后缀变体,可利用正则的**或运算符(|)**组合多个匹配规则,同时兼容元素开头的空格:
import re address = [' South region', ' district KTS', ' 4', ' app. 106', ' ent. 1', ' st. 15', ' North reg.', ' East r-n'] # 编译匹配多种区域后缀的正则 region_pattern = re.compile(r'\s*.+(region|reg\.|r-n)$') # 筛选符合条件的区域元素 region = list(filter(region_pattern.match, address)) print(region) # 输出: [' South region', ' North reg.', ' East r-n']
\s*:匹配元素开头任意数量的空格.+:匹配区域名称部分的任意字符(region|reg\.|r-n)$:精准匹配结尾的三种区域后缀,$确保匹配到元素末尾,避免误匹配
2. 提取建筑编号
针对纯数字(如4)或数字+字母+数字(如4k1)的建筑编号格式,可编写正则匹配以数字开头、由数字和字母组成的元素:
# 编译匹配建筑编号的正则 building_pattern = re.compile(r'^\s*[0-9]+[a-zA-Z0-9]*$') # 筛选符合条件的建筑编号 building_num = list(filter(building_pattern.match, address)) print(building_num) # 输出: [' 4']
^\s*:匹配元素开头的空格[0-9]+:确保编号以至少一个数字开头[a-zA-Z0-9]*:允许后续出现任意数量的字母或数字,覆盖两种编号格式
内容的提问来源于stack exchange,提问作者Iren E
相关产品推荐
相关产品推荐

