【问题标题】:How do I find a group that does not match a set of accepted phrases如何找到与一组接受的短语不匹配的组
【发布时间】:2017-05-05 18:57:32
【问题描述】:

如何在以下 URL 中搜索不是我允许的短语的 {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} (或类似)的每个实例。因为我打算把它们换掉。

【问题讨论】:

  • 你到底想做什么?如果存在 {revenue},则匹配整个 URL?
  • 我想匹配 {revenue}(或类似)的每个实例
  • 所以你的意思是bad=的内容?

标签: regex


【解决方案1】:

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

你应该使用:

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

Updated Regex Demo

[^}]* 将在匹配 } 之前匹配 0 个或多个不是 } 的任何字符。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 不幸的是,这会让 {offer_name£%5646} 之类的东西溜走。
    猜你喜欢
    • 2016-11-02
    • 1970-01-01
    • 2022-01-28
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多