如何编写正则匹配Hxxx代码后到End word前跳过H系列代码的文本
正则匹配解决方案
原正则问题
你当前使用的(?<=H\d\d\d)([.*\w\W\n]+)(?=End word)采用贪婪匹配逻辑,会直接从第一个Hxxx代码匹配到End word前的所有内容,不会过滤中间出现的H系列代码,因此不符合需求。
正确正则
(?<=H\d{3}(?:\+H\d{3})* )[\s\S]*?(?= *(?:H\d{3}(?:\+H\d{3})*|End word))
匹配逻辑
- 后顾断言
(?<=H\d{3}(?:\+H\d{3})* ):定位在单组Hxxx、或多组Hxxx用加号拼接的H系列代码之后的位置 - 非贪婪匹配
[\s\S]*?:匹配任意含换行的字符,不会跨终止标记截取 - 前瞻断言
(?= *(?:H\d{3}(?:\+H\d{3})*|End word)):匹配到下一组H系列代码或End word之前就停止,自动跳过所有H系列代码
使用方法
开启正则多行匹配模式,提取所有匹配到的文本段后,用.拼接各段即可得到你预期的输出结果。
内容的提问来源于stack exchange,提问作者Shwapx
相关产品推荐
相关产品推荐

