选择“不匹配”数据

时间:2019-04-01 12:01:30

标签: regex

使用下面的表达式,我可以在大括号内找到包含ToolTipML的所有数据。但是我要尝试的是选择所有不包含ToolTipML的数据。谁能指出我所缺少的吗?

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

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

2 个答案:

答案 0 :(得分:0)

我对您的理解是正确的,所以您可以使用否定的前瞻:

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

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

答案 1 :(得分:-1)

可悲的是,正则表达式没有模式取反,但是一种流行的技巧是使用重复模式:任意匹配,先行再匹配。

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

我们确保输入的每个字符都不会出现在禁止字符的前面或后面。 缺点是大多数正则表达式实现不支持可变长度的超前/后向模式,但在您的情况下,它可以flawlessly使用。

这是一个很受欢迎的问题,它是already answered,其中有更多详细信息和说明