如何用正则表达式提取Kunde:与Artikel:间带换行的地址数据?
提取「Kunde:」与「Artikel:」间地址(保留换行)的正则方案
要提取这两个标记之间的地址并保留原换行格式,核心是让正则能匹配换行符,以下是具体实现:
核心正则
Kunde:\s*(.*?)\s*Artikel:
关键要点:
- 必须开启单行模式(DOTALL/Singleline):默认情况下
.不匹配换行,开启后.会匹配包括换行在内的所有字符,才能完整捕获地址的多行内容。 .*?是非贪婪匹配:确保匹配到第一个「Artikel:」就停止,不会误捕后面的内容。\s*用来兼容标记前后的空白(换行、空格都算),如果你的标记和地址紧挨着,可直接去掉改成Kunde:(.*?)Artikel:。
常用场景示例
Python
用re.DOTALL开启单行模式:
import re source_text = """ Kunde: Musterstraße 123 12345 Musterstadt Deutschland Artikel: Produkt XY """ match_result = re.search(r'Kunde:\s*(.*?)\s*Artikel:', source_text, re.DOTALL) if match_result: address = match_result.group(1).strip() # strip可选,按需去除首尾多余空白 print(address)
输出会完整保留原换行:
Musterstraße 123 12345 Musterstadt Deutschland
JavaScript(ES2018+)
用/s标志开启单行模式:
const sourceText = ` Kunde: Musterstraße 123 12345 Musterstadt Deutschland Artikel: Produkt XY `; const regex = /Kunde:\s*(.*?)\s*Artikel:/s; const match = sourceText.match(regex); if (match) { const address = match[1].trim(); console.log(address); }
文本编辑器(VS Code、Sublime等)
在查找功能里勾选「正则表达式」和「.匹配新行」选项,直接用上述正则就能选中目标内容,复制即可。
额外提示
如果文本里有多组「Kunde:」和「Artikel:」,要批量提取的话:
- Python用
re.findall替代re.search - JavaScript给正则加
/g标志,配合exec循环获取所有结果
内容的提问来源于stack exchange,提问作者Dominic85
相关产品推荐
相关产品推荐

