我对正则表达式有疑问。
我目前在php库上工作,以创建更多人类可读的查询字符串过滤器。 (the lib,the demo)
问题来自令牌value{{value}}
regex:/(=)\{(\S*)(\}&?|\}$)/U
字符串:queryA={valueA1{{valueA1a}}&valueA2{{valueA2a}}}&queryB={valueB1{{valueB1a}}&valueB2{{valueB2a}}}
匹配项:
valueA1{{valueA1a
而非valueA1{{valueA1a}}&valueA2{{valueA2a}}
valueB1{{valueB1a
而非valueB1{{valueB1a}}&valueB2{{valueB2a}}
https://regex101.com/r/Dqg4SB/1
那么我该如何匹配}$
和}&
却不能匹配}}$
和}}&
?
我想匹配{
和}
之间的所有表达式,而不匹配{{
}}
答案 0 :(得分:1)
您可以使用
/(=)\{([^}\s]*(?:}}[^}\s]*)*)}/
请参见regex demo。
详细信息
(=)
-第1组:一个=
字符\{
-一个{
字符([^}\s]*(?:}}[^}\s]*)*)
-第2组:
[^}\s]*
-除}
和空格之外的零个或多个字符(?:}}[^}\s]*)*
-零次或多次重复:
}}
-文字}}
子字符串[^}\s]*
-除}
和空格之外的零个或多个字符}
-一个}
字符。