【发布时间】:2017-05-03 15:06:04
【问题描述】:
我一直在尝试在 Notepad++ 上执行搜索,它找到了一个以某个字符串 (StringX) 开头并以另一个字符串 (StringZ) 结尾但不包含另一个字符串 (StringY) 的文本块。 为了给你一些背景信息,我正在查看一个包含数千个重复上述模式的块的文件,只有几个块没有它。
编辑 2: 具体例子已经上传到https://justpaste.it/1668j
正则表达式需要找到字符串 chargingContextSpecific .+?chargingContextSpecific((.|\r)+?),然后转到下一次迭代 3 个连续的右大括号 } \}\r.+?\}\r.+?\} 并在在这两个字符串之间,文本 JKLMN = 3GPP-Charging-Id 不存在。在示例中,Block#0 和 Block#2 是预期输出,Block#1 包含我正在寻找的模式。
请注意,我正在搜索的文件包含超过 200 万行,并且只有 6 或 7 种情况符合条件。
【问题讨论】:
-
您可以添加 2 个示例的实际字符串,一个带 StringY,一个不带。以及您要提取什么。
-
我认为
(?s)StringX(?:(?!StringY|StringX).)*?StringZ会起作用。 -
我更新了示例