使用正则表达式解析自定义 URI
Parsing custom URI with regex
我对正则表达式有疑问。
我目前在 php 库上工作,以创建更多人类可读的查询字符串过滤器。
(the lib, the demo)
问题来自令牌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}}
https://regex101.com/r/Dqg4SB/1
那么我怎样才能匹配 }$
和 }&
而不是 }}$
和 }}&
呢?
我想匹配 {
和 }
之间的所有表达式而不匹配 {{
}}
您可以使用
/(=)\{([^}\s]*(?:}}[^}\s]*)*)}/
参见regex demo。
详情
(=)
- 第 1 组:一个 =
字符
\{
- 一个 {
字符
([^}\s]*(?:}}[^}\s]*)*)
- 第 2 组:
[^}\s]*
- }
和 whitesapce 以外的零个或多个字符
(?:}}[^}\s]*)*
- 零次或多次重复:
}}
- 文字 }}
子串
[^}\s]*
- }
和 whitesapce 以外的零个或多个字符
}
- 一个 }
字符。
我对正则表达式有疑问。
我目前在 php 库上工作,以创建更多人类可读的查询字符串过滤器。 (the lib, the demo)
问题来自令牌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}}
https://regex101.com/r/Dqg4SB/1
那么我怎样才能匹配 }$
和 }&
而不是 }}$
和 }}&
呢?
我想匹配 {
和 }
之间的所有表达式而不匹配 {{
}}
您可以使用
/(=)\{([^}\s]*(?:}}[^}\s]*)*)}/
参见regex demo。
详情
(=)
- 第 1 组:一个=
字符\{
- 一个{
字符([^}\s]*(?:}}[^}\s]*)*)
- 第 2 组:[^}\s]*
-}
和 whitesapce 以外的零个或多个字符
(?:}}[^}\s]*)*
- 零次或多次重复:}}
- 文字}}
子串[^}\s]*
-}
和 whitesapce 以外的零个或多个字符
}
- 一个}
字符。