You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python正则表达式处理多行地址仅匹配首行问题排查

问题分析与解决

你的正则只提取到第一行,核心问题有两个:

  • 空格匹配不一致:原地址文本里是Address:(冒号前无空格),但你的正则写的是Address :(冒号前多了空格),这会导致匹配逻辑错位——你说能提取到第一行,推测实际文本里可能带有空格,但这个细节必须和实际内容对齐。
  • 无法跨多行匹配:.*默认只匹配除换行符外的任意字符,re.MULTILINE的作用仅仅是让^和$匹配每行的开头/结尾,并不会改变.的匹配规则。所以你的正则只能捕获Address :所在行的内容,没法跨多行匹配到后续的地址行和邮编。

要实现从Address:到6位邮政编码的完整匹配,需要做两个调整:

  1. 修正正则里的空格,和实际文本的Address:格式保持一致;
  2. 加上re.DOTALL(或re.S)标志,让.能匹配换行符,同时用非贪婪匹配+邮编定位来精准结束匹配。

修正后的正则示例:

re.findall(r'Address:(.*?\d{6})', text, re.DOTALL)

如果实际文本里Address和冒号之间确实有空格,就改成:

re.findall(r'Address :(.*?\d{6})', text, re.DOTALL)

关键说明

  • re.DOTALL:让.匹配包括换行在内的所有字符,实现跨多行捕获;
  • .*?:非贪婪匹配,避免过度捕获超出邮编范围的内容;
  • \d{6}:精准匹配6位邮政编码,作为整个匹配的结束标志。

内容的提问来源于stack exchange,提问作者Adarsh Nair

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 21:10:46