[英]Regex with optional capture groups
我知道还有其他标题相同的问题,但我在其中找不到答案。
我有一个可能是/action
或/action{key:value}
的字符串,我正在尝试获取变量中的action
, key
和value
。
我已经尝试过几种正则/^\\/(.*?)(\\{(.*)\\:(.*)\\})?/
,它们是该正则/^\\/(.*?)(\\{(.*)\\:(.*)\\})?/
变体:/ /^\\/(.*?)(\\{(.*)\\:(.*)\\})?/
:(. /^\\/(.*?)(\\{(.*)\\:(.*)\\})?/
/^\\/(.*?)\\{(.*)\\:(.*)\\}/
匹配/action{key:value}
但不匹配/action
/^\\/(.*)(\\{(.*)\\:(.*)\\})?/
(声明捕获组可选)匹配/action
而不是/action{key:value}
(它抓住一切)
因此,如果我宣布第一组为懒惰:
/^\\/(.*?)(\\{(.*)\\:(.*)\\})?/
不再匹配。
我知道我已经接近解决方案了,但是我肯定会误解一些基本的问题:)
将整个{...}
部分放在一个可选的非捕获组中,同时让第一个组保持懒惰:
^\/(.*?)(?:{(.*)\:(.*)})?$
^^^ ^
https://regex101.com/r/S4DAy3/1
或使用否定字符集(不包括{
s:
^\/([^{]+)(?:{(.*)\:(.*)})?$
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.