选择“不匹配”数据

问题描述 投票:0回答:2

通过下面的表达式,我可以在大括号内找到包含ToolTipML的所有数据。但我要做的是选择所有不包含ToolTipML的数据。任何人都可以指出我错过了什么?

({[^{}]*?)(ToolTipML)([^}]*})

这是一个例子https://regex101.com/r/bNq6kV/1

regex
2个回答
-1
投票

可悲的是,正则表达式没有模式否定,但是一个流行的黑客是使用任意匹配,前瞻和任何匹配的重复模式。

例如,在你的情况下,正则表达式是(?s)\{(?:.(?!ToolTipML).)+?\}

我们确保输入的每个字符都不会被禁止,也不会被禁止的模式所遵循。缺点是大多数正则表达式实现不支持可变长度前瞻/后看模式,但在你的情况下它适用于flawlessly

这是一个很受欢迎的问题,它是already answered的更多细节和解释


0
投票

我理解正确,你可能会使用负面的前瞻:

{((?!ToolTipML)[^{}])*}

https://regex101.com/r/bNq6kV/3

© www.soinside.com 2019 - 2024. All rights reserved.