1

我正在尝试提出一个正则表达式,它允许我解析冒号分隔的标记,格式化为键和值对。

[/foo:bar] // where [key:value]

棘手的部分是一个标记值可以包含另一个标记。

[/foo:[/foo:bar]]

在上述情况下,我想匹配 foo 作为键和 [/foo:bar] 作为值。以下表达式有效:

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

但是,当字符串有多个标记时,这不起作用。例如:

[/foo:[/foo:bar]][/foo:bar] // results in foo and [/GetPath:[/GetPath:]]][/foo:bar

我想我只是稍微偏离了一点,但我一辈子都无法弄清楚我错过了什么。

4

1 回答 1

0

此正则表达式将名称与嵌套值匹配:

\[/([^:]+):(.*?)\](?=\[|$)

更改是添加了一个预测,它断言定界右方括号后面的字符必须是一个新术语或输入的结尾。

根据这个关于 rubular 的现场演示,使用输入时

[/foo:[/foo:bar]][/foo:bar]

结果匹配是:

Match 1...
Group 1:    foo
Group 2:    [/foo:bar]
Match 2...
Group 1:    foo
Group 2:    bar
于 2013-07-19T03:57:13.660 回答