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

如何用Regex反向查找匹配含指定词汇的目标段落?

解决正则匹配包含指定词汇的段落问题

需求分析

需要匹配文本中包含the Agency(可带<em>标签)的段落,段落以数字+点(如3.)开头,到下一个数字+点(如4.)之前结束。

修正后的正则表达式

(?s)(\d+\.\s+.*?(?:<em>)?the Agency(?:<\/em>)?.*?)(?=\n\d+\.\s)

正则说明

  • (?s):开启单行模式,让.匹配包括换行在内的所有字符
  • \d+\.\s+:匹配段落开头的数字点+空格(如3. )
  • .*?(?:<em>)?the Agency(?:<\/em>)?.*?:非贪婪匹配任意内容,确保覆盖包含带/不带<em>标签的the Agency的整个段落部分
  • (?=\n\d+\.\s):正向预查,匹配到下一个段落开头(换行+数字点+空格)时停止,不会包含该段落起始标记

反向查找实现方案

如果需要从the Agency反向定位到最近的段落开头,可以用反向断言实现:

(?s)(?<=\n\d+\.\s).*?(?:<em>)?the Agency(?:<\/em>)?.*?(?=\n\d+\.\s)
  • (?<=\n\d+\.\s):反向预查,确保匹配内容的前一个位置是目标段落的起始标记(换行+数字点+空格)

原正则的问题

原正则\n(\d+.\s+.<em>?the Agency.</em>?)(\n\d+.\s)无法满足需求的原因:

  1. 仅匹配了the Agency附近的小段内容,没有覆盖整个段落的前后部分
  2. 未处理跨换行的匹配逻辑,无法捕获包含换行的完整段落

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 10:50:55