正则如何匹配起始词与结束词之间包含换行的完整段落并获取多匹配
问题根因
你当前使用的正则存在两个问题:
*为贪婪量词,会尽可能匹配最长的符合规则的文本,所以会从第一个PRODUCT DESCRIPTION直接匹配到整个文本末尾的最后一个",,最终仅得到1个匹配结果(.|\n)的写法匹配效率极低,不推荐使用
修正方案
推荐使用通用兼容所有正则引擎的写法,无需额外开启匹配模式:
"PRODUCT DESCRIPTION[\s\S]*?",
如果你的正则引擎支持单行(dotall)模式,也可以开启该模式后使用更简洁的写法:
"PRODUCT DESCRIPTION.*?",
其中*?为非贪婪量词,会匹配到距离起始字符串最近的",就停止,因此可以将3段内容分别独立匹配,完全符合你的预期输出要求。
如果需要将匹配内容替换为指定词,直接用上述正则做匹配替换即可,3段内容会被分别替换。
内容的提问来源于stack exchange,提问作者covid 2020
相关产品推荐
相关产品推荐

