0

トークンは次のようにするか、{num}または{num:2}(2 は引数)

私はこのようなマッチングを実現したいと思います:

// no args
[0] = num

// args (anything after the colon and before the closing brace as one match is fine)
[0] = num
[1] = 2

簡単だった中括弧内のすべてに一致させることができましたが、私の正規表現はあまりにも単純すぎて、それよりも複雑なものを得ることができません! ありがとう。

参考までに、私はjavascriptを使用して\{(.*?)\}おり、その中のすべてのコンテンツと一致しています。

4

1 に答える 1

1

次のようなことができます。

\{(.*?)(?::(.*?))?\}

そしてテスト:

> '{foo:bar}'.match(/\{(.*?)(?::(.*?))?\}/)
["{foo:bar}", "foo", "bar"]
> '{foo}'.match(/\{(.*?)(?::(.*?))?\}/)
["{foo}", "foo", undefined]
  • (.*?)非貪欲に最初のグループに一致します。
  • (?:...)非キャプチャ グループです。通常の捕獲グループと同じですが、捕獲されません。
  • :(.*?)コロンの後のものをキャプチャします。
  • ?最後のグループ (コロンと 2 番目のキャプチャ グループを含む) をオプションにします。
于 2013-04-19T21:38:42.010 に答える