正则表达式多场景匹配:如何获取所有最短匹配结果?
解决方案:用正则直接捕获所有符合要求的最短匹配
可以直接通过正则实现需求,不需要额外二次查找。核心思路是限制每个匹配的with到逗号之间不再出现with,同时开启全局匹配来获取所有结果。
正则表达式
\bwith\s+((?!\bwith\s).*?)(?=,)
正则说明
\bwith\s+:匹配独立的with单词,同时跳过后面的空白字符(?!\bwith\s):正向否定预查,确保从当前with到逗号的区间内,不会再出现另一个with,彻底避免长匹配.*?:非贪婪匹配任意字符,直到遇到逗号前的位置(?=,):正向预查逗号,只匹配逗号前的内容,不把逗号包含在结果里
开启全局匹配(g修饰符)后,对你的测试字符串会精准捕获两个目标结果:punctuation 和 more punctuation,完全符合你要的最短匹配且不遗漏的要求。
内容的提问来源于stack exchange,提问作者Pablo
相关产品推荐
相关产品推荐

