nikic/FastRouteのStd.phpを読んでいます。このコードに出てくるconst VARIABLE_REGEX
で分からないところがあります。
ちなみにテストコードはこちらです。
php
1 const VARIABLE_REGEX = <<<'REGEX' 2\{ 3 \s* ([a-zA-Z_][a-zA-Z0-9_-]*) \s* 4 (?: 5 : \s* ([^{}]*(?:\{(?-1)\}[^{}]*)*) 6 )? 7\} 8REGEX;
上記は{id:\d+}
のような変数をルーティングするパスから取得するための正規表現です。: \s* ([^{}]*
までは正規表現を使った変数のパターンを表していますが、これより後ろは何を表してるのでしょうか? {id:\d+{}}
と波括弧のネストをしている許容していると思いますが、2つ目の波括弧の中身は(?-1)
です。これは1個前のキャプチャしたものを参照していると思います。
{id:\d+{id}}
という形を定義したとしてどんな意味があるのかがわかりませんでした。
どうぞよろしくお願い致します。
あなたの回答
tips
プレビュー