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

如何用Python正则匹配包含多个逗号的整行文本?

匹配含多逗号的地址行

问题根源

你的原正则没生效主要是这几个问题:

  • 没加行锚定符^和$,导致不会限定匹配整行,而是乱匹配文本里任意带逗号的片段
  • 分组(.*?)的位置不对,加上前面的.*贪婪匹配,会把大部分内容吃掉,只留下逗号前的零碎内容
  • 没考虑地址里的连续逗号,,和特殊引号”这类特殊字符

正确实现代码

要匹配整行且包含至少3个逗号的行,直接用下面的代码:

import re

ocr_text = '''SIA "JET TRAVEL"
Dzirnieku iela 15, Lidosta ,,Riga”, Marupes novads, LV-1053, Latvija
40003789713'''

# 匹配整行,且包含至少3个逗号(支持连续逗号)
address_pattern = r'^.*(?:,.*){3,}$'
address = re.findall(address_pattern, ocr_text, flags=re.M)
for match in address:
    print(match)

正则逻辑解释

  • ^:锚定行开头,确保从每行的第一个字符开始匹配
  • .*:匹配行开头到第一个逗号前的任意内容
  • (?:,.*){3,}:非捕获分组,匹配「逗号+后续任意内容」至少3次,保证整行有至少3个逗号
  • $:锚定行结尾,确保匹配到每行的最后一个字符
  • re.M:多行模式,让^和$对每一行单独生效

精准优化(可选)

如果确定目标行至少有4个逗号(比如你的示例行实际有5个逗号),可以把{3,}改成{4,},进一步缩小匹配范围:

address_pattern = r'^.*(?:,.*){4,}$'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 20:06:19