我正在尝试提供一个正则表达式,它允许我解析冒号分隔的标记,格式化为键和值对。
[/foo:bar] // where [key:value]
棘手的部分是令牌值可以包含另一个令牌。
[/foo:[/foo:bar]]
在上面的例子中,我希望将foo作为键,将[/ foo:bar]作为值。以下表达式有效:
^\[/([^:]+):(.*)\]+$
但是,当字符串有多个标记时,这不起作用。例如:
[/foo:[/foo:bar]][/foo:bar] // results in foo and [/GetPath:[/GetPath:]]][/foo:bar
我想我只是略微偏离,但我不能,因为我的生活,弄清楚我错过了什么。
答案 0 :(得分:0)
此正则表达式将name与嵌套值匹配:
\[/([^:]+):(.*?)\](?=\[|$)
更改是添加前瞻,在分隔右方括号后断言字符必须是输入的新术语或结尾。
根据此live demo on rubular,使用输入
[/foo:[/foo:bar]][/foo:bar]
结果匹配是:
Match 1...
Group 1: foo
Group 2: [/foo:bar]
Match 2...
Group 1: foo
Group 2: bar