我一直试图在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个案例符合条件。
答案 0 :(得分:0)
基于您的示例:
[#0-9\s:]+chargingContextSpecific((?!JKLMN[\s=]*3GPP-Charging-Id).)*?(\s*:\s*\}\s*){3}
您需要在搜索框中勾选“匹配换行符”。这应该做到这一点。我已经尝试了它,它只返回了你提供的字符串中的一个匹配。