Regex 使用正则表达式解析自定义URI

Regex 使用正则表达式解析自定义URI,regex,regex-negation,regex-lookarounds,Regex,Regex Negation,Regex Lookarounds,我对正则表达式有问题 我目前正在使用php库来创建更易于阅读的查询字符串过滤器。 (,) 问题来自令牌value{{{value}} 正则表达式:/(=)\{(\S*)(\}&?\}$)/U 字符串:queryA={valueA1{{{valueA1a}}&valueA2{{valueA2a}}}&queryB={valueB1{{valueB1a}}和valueB2{{valueB2a}} 匹配项: valueA1{{valueA1a而不是valueA1{{{valueA1a}}&value

我对正则表达式有问题

我目前正在使用php库来创建更易于阅读的查询字符串过滤器。 (,)

问题来自令牌
value{{{value}}

正则表达式:
/(=)\{(\S*)(\}&?\}$)/U

字符串:
queryA={valueA1{{{valueA1a}}&valueA2{{valueA2a}}}&queryB={valueB1{{valueB1a}}和valueB2{{valueB2a}}

匹配项:

  • valueA1{{valueA1a
    而不是
    valueA1{{{valueA1a}}&valueA2{{{valueA2a}
  • valueB1{{valueB1a
    而不是
    valueB1{{{valueB1a}}&valueB2{{{valueB2a}

那么如何匹配
}$
}&
而不是
}$
}&

我想匹配
{
}
之间的所有表达式,而不匹配
{{
}
您可以使用

/(=)\{([^}\s]*(?:}}[^}\s]*)*)}/

详细信息

  • (=)
    -第1组:a
    =
    字符
  • \{
    -a
    {
    字符
  • ([^}\s]*(?:}}[^}\s]*)*)
    -第2组:
    • [^}\s]*
      -除
      }
      和WhiteAPCE之外的零个或多个字符
    • (?:}}}[^}\s]*)*
      -零次或多次重复:
      • }
        -文本
        }
        子字符串
      • [^}\s]*
        -除
        }
        和WhiteAPCE之外的零个或多个字符
  • }
    -a
    }
    字符