繁体   English   中英

带有可选捕获组的正则表达式

[英]Regex with optional capture groups

我知道还有其他标题相同的问题,但我在其中找不到答案。

我有一个可能是/action/action{key:value}的字符串,我正在尝试获取变量中的actionkeyvalue

我已经尝试过几种正则/^\\/(.*?)(\\{(.*)\\:(.*)\\})?/ ,它们是该正则/^\\/(.*?)(\\{(.*)\\:(.*)\\})?/变体:/ /^\\/(.*?)(\\{(.*)\\:(.*)\\})?/ :(. /^\\/(.*?)(\\{(.*)\\:(.*)\\})?/

/^\\/(.*?)\\{(.*)\\:(.*)\\}/匹配/action{key:value}但不匹配/action

/^\\/(.*)(\\{(.*)\\:(.*)\\})?/ (声明捕获组可选)匹配/action而不是/action{key:value} (它抓住一切)

因此,如果我宣布第一组为懒惰:

/^\\/(.*?)(\\{(.*)\\:(.*)\\})?/不再匹配。

我知道我已经接近解决方案了,但是我肯定会误解一些基本的问题:)

将整个{...}部分放在一个可选的非捕获组中,同时让第一个组保持懒惰:

^\/(.*?)(?:{(.*)\:(.*)})?$
        ^^^             ^

https://regex101.com/r/S4DAy3/1

或使用否定字符集(不包括{ s:

^\/([^{]+)(?:{(.*)\:(.*)})?$

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM