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

この正規表現は、ネストされた値を持つ 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
于 2013-07-19T03:57:13.660 に答える