正则表达式匹配问题:仅提取多行地址末两行末尾的5位数字
提取多行地址最后两行末尾5位数字的正则方案
问题拆解
你需要从多行地址的最后两行提取末尾的5位数字,忽略其他行里的数字,但之前用的正则会带出多余的前置内容,核心就是要精准锁定最后两行,只抓取行尾的目标数字。
可行的正则写法
直接用这个正则就能解决问题:
(?:.*?(\d{5}))\n(?:.*?(\d{5}))$
如果你的工具支持多行模式,也可以用下面这个正则,然后只取最后两次匹配的结果:
^\D*(\d{5})$
正则说明
(?:.*?(\d{5}))\n:匹配倒数第二行,用非捕获组跳过行内其他内容,只捕获行末尾的5位数字(?:.*?(\d{5}))$:匹配最后一行,同样只捕获行尾的5位数字- 这样得到的捕获结果就是纯目标数字,不会包含任何多余的前置内容
示例验证
针对你提供的示例文本:
Bob Smith
123 Maple St Apt 44456
44325 Blue Building
Newington, CT. 06000
06111
使用上述正则可以精准捕获到06000和06111,完全符合预期。
内容的提问来源于stack exchange,提问作者Karlton
相关产品推荐
相关产品推荐

