You need to enable JavaScript to run this app. 如何使用正则表达式选取并标记两个表达式之间的字符串
优惠活动
大模型
产品
解决方案
定价
更多

如何使用正则表达式选取并标记两个表达式之间的字符串

三类变更日志文本的正则匹配实现方案

匹配思路

直接用三个固定的变更短语作为定位锚点,锁定每一段需要标记的文本块,从根源上避免误匹配文本里零散出现的相同短语内容。

可直接落地使用的正则

开启全局、多行匹配修饰符后,套用以下正则即可覆盖全部三类目标文本:
^(Solution changed from|Resolved Time changed from|Updated By changed from)[\s\S]*?(?=^(?:Solution changed from|Resolved Time changed from|Updated By changed from)|\Z)

代码段拆解说明

  • 表达式开头的^配合多行匹配修饰符,锁定每一行的起始位置:只有出现在行首的目标短语,才会被判定为日志条目的开头,彻底杜绝零散文本片段的误匹配
  • 第一组括号内通过逻辑或枚举全部三类需要匹配的起始关键词,无遗漏覆盖目标范围
  • [\s\S]*?采用非贪婪匹配规则,吃掉起始关键词后面跟着的所有文本内容,包括空格、换行、特殊符号
  • 结尾的正向先行断言负责划定匹配的截止边界:要么遇到下一个同类型日志条目的开头,要么匹配到整个文本的最后位置,绝不会跨条目标错后续其他日志内容

调试踩坑提醒

  • 必须开启g(全局匹配)和m(多行匹配)两个修饰符,否则只能匹配到文本中第一个出现的目标条目,没法完成全量标记
  • 如果后续需要对匹配到的内容做高亮标记,直接把完整匹配到的文本块替换为对应标记语法就行,不需要额外拆分捕获组
  • 遇到匹配范围过大的问题时,先检查是不是误删了非贪婪匹配的?标识:贪婪模式下会从第一个目标短语一直匹配到文本末尾,出现严重过匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.14 02:27:10