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

正则表达式如何匹配指定序号后含换行符的完整文本

正则匹配多行序号后内容解决方案

你之前写的(?<=\d°\)).*匹配不全的根本原因是:默认正则规则下,.通配符不匹配换行符,遇到文本里的换行就会终止匹配。
下面是两种可直接使用的写法:

方案1:开启dotall(单行)模式(推荐)

  • 正则表达式:
(?s)(?<=\d°\)).*?(?=\s*(?:<p>)?\d°\)|</p>|$)
  • 规则说明:
    • (?s) 是单行模式修饰符,开启后.可以匹配包括换行符在内的所有字符
    • .*? 用非贪婪模式匹配内容,避免跨序号过度匹配
    • 正向预查部分用来划定匹配终止边界:碰到下一个序号开头、当前p标签闭合、或者整个字符串结尾就停止匹配,不会把不属于当前序号的无关内容纳入匹配结果

方案2:无模式修饰符兼容写法

如果你的使用场景不支持添加模式修饰符,直接用[\s\S]替代.即可——这个字符组天然覆盖所有字符(空白、换行、普通文本都能匹配),不需要修改匹配模式:

(?<=\d°\))[\s\S]*?(?=\s*(?:<p>)?\d°\)|</p>|$)

匹配效果说明

使用上述正则可以准确拿到2个目标匹配结果:

  • 第一个结果对应1°)后到第一个段落结束的全部内容,包含所有换行的文本
  • 第二个结果对应2°)后到对应段落结束的全部内容,不会遗漏换行后的片段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 07:09:17