如何找到与一组已接受的短语不匹配的组

时间:2017-05-05 18:57:32

标签: regex

如何搜索以下网址,查找{thing}不是我允许的短语的实例?

测试字符串;

https://example.com?good={offer_id}&good2={offer_name}&bad={revenue}&extra=1

{offer_id}和{offer_name}不匹配 {revenue}应该匹配

我想出的最接近的模式是(但没有匹配);

/{(?!(offer_id|offer_name))}/

在线正则表达式测试器:https://regex101.com/r/HwSknv/1

EDIT1:我希望匹配{revenue}(或类似)的每个实例。我打算将它们换掉。

2 个答案:

答案 0 :(得分:1)

问题是您匹配}而未匹配{之后的任何字符。

您应该使用:

{(?!(?:offer_id|offer_name)})[^}]*}

Updated Regex Demo

在匹配[^}]*之前,

}将匹配任何不是}的字符中的0个或更多。

答案 1 :(得分:0)

{(?!(offer_id|offer_name)).*?}