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

如何使用正则表达式匹配多行结构的header及其对应0~N个value

原有正则的问题

你编写的初始正则存在三处核心错误:

  • value匹配规则中的[^\s]未添加长度量词,仅能匹配单个非空白字符,无法识别长度大于1的value内容
  • 重复捕获组默认仅会保留最后一次匹配的内容,无法收集header下对应的全部value条目
  • 未开启多行匹配模式时,^和$锚点仅能匹配整个文本的首尾位置,无法逐行识别header、value的行边界
正确正则模式

开启多行匹配模式(m修饰符)后使用如下模式即可:

^(?P<header>\S+)$(?:\r?\n\t(?P<value>\S+))*

注:\S是[^\s]的等价简写,\r?\n可同时兼容Unix风格\n换行和Windows风格\r\n换行

使用说明
  • 若使用PCRE2、Python regex库等支持重复命名捕获组自动聚合的引擎,该模式可直接返回每个匹配结果下的1个header值,以及对应0到N个value值的列表
  • 若使用的引擎不支持重复捕获组聚合,可先通过该模式匹配出每个header及其下属所有value的完整文本块,再在块内提取所有以制表符开头的value行即可
  • 模式默认匹配header下方连续缩进的value行,遇到下一个无缩进的header行时会自动结束当前匹配块

内容的提问来源于stack exchange,提问作者José D.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 05:42:14