REGEX:查找以WORDX开头的文本块,以WORDZ结尾,不包含WORDY

时间:2017-04-27 22:55:32

标签: regex notepad++

我一直试图在Notepad ++上执行搜索,它找到一个以某个字符串(StringX)开头并以另一个字符串(StringZ)结尾但在任何地方都不包含另一个字符串(StringY)的文本块之间。 为了给你一些背景信息,我要查看一个包含数千个重复上述模式的块的文件,而且只有几个块没有。

编辑2: 具体示例已上传到https://justpaste.it/1668j

REGEX需要找到字符串 chargingContextSpecific .+?chargingContextSpecific((.|\r)+?),之后转到3个连续的大括号} \}\r.+?\}\r.+?\}的下一次迭代并验证在这两个字符串之间不存在文本 JKLMN = 3GPP-Charging-Id 。在示例中,块#0和块#2是预期输出,块#1包含我正在寻找的模式。

请注意,我搜索的文件包含2百万+行,并且只有6或7个案例符合条件。

1 个答案:

答案 0 :(得分:0)

基于您的示例:

[#0-9\s:]+chargingContextSpecific((?!JKLMN[\s=]*3GPP-Charging-Id).)*?(\s*:\s*\}\s*){3}

您需要在搜索框中勾选“匹配换行符”。这应该做到这一点。我已经尝试了它,它只返回了你提供的字符串中的一个匹配。