首页 > 解决方案 > 在不使用环视的情况下匹配两组字符之间的字符串

问题描述

我一直在研究一些正则表达式来尝试匹配两个字符之间的整个字符串。我正在尝试捕获从“系统”一直到“prod_rx”的所有内容。(我希望在我的比赛中包含这两个字符串)。以下是我正在使用的全文:

\"alert_id\":\"123456\",\"severity\":\"medium\",\"summary\":\"System generated a Medium severity alert\\\\prod_rx.\",\"title\":\"123456-test_alert\",

我现在使用的正则表达式是...:

(?<=summary\\":\\").*?(?=\\")

当我能够使用环视时,这非常有效,例如在 Regex101 中:https ://regex101.com/r/jXltNZ/1 。但是,我公司使用的软件中的正则表达式解析器不支持环视(很疯狂,对吗?)。

无论如何-我的问题基本上是如何在不使用前瞻/后视的情况下匹配上述文本。很感谢任何形式的帮助!!

标签: regexregex-groupregex-greedy

解决方案


好吧,我们可以简单地使用其他非环视方法,例如这个简单的表达式:

.+summary\\":\\"(.+)\\",

我们的数据在这个捕获组中:

(.+)

我们的正确边界是:

\\",

我们的左边界是:

.+summary\\":\\"

演示


推荐阅读