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

修改正则表达式实现指定账户段的多次精准匹配提取

解决多组SUBH2002078568/SUBF2002078568段的正则提取问题

你的原正则问题出在[\s\S]+是贪婪匹配模式,它会尽可能匹配最长的内容——当文件里有多组SUBH/SUBF段时,会从第一个SUBH2002078568一直匹配到最后一个SUBF2002078568,把中间所有无关的组都包含进去。

给你两种修改方案:

方案1:非贪婪匹配(简单直接)

把贪婪的+改成非贪婪的+?,正则变为:

(?<=SUBH2002078568)[\s\S]+?(?=SUBF2002078568)

这个正则会匹配到**第一个遇到的SUBF2002078568**就停止,刚好对应每组SUBH和它后面紧邻的SUBF之间的内容,全局匹配就能提取所有组的目标内容。

方案2:严格排除无关标识(更严谨)

如果担心中间内容里可能出现类似SUBH2002078568或SUBF2002078568的片段(虽然概率低),可以用负向预查确保中间不会出现这些标识:

(?<=SUBH2002078568)(?:(?!SUBH2002078568|SUBF2002078568)[\s\S])+(?=SUBF2002078568)

它会逐个字符检查,只要没遇到目标标识就继续匹配,完全避免跨组的情况。

使用时,在支持正则全局匹配的工具(比如Python的re.findall()、Notepad++的“查找全部”)里运行这个正则,就能得到每一组的精准内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 18:32:06