URIで二階層以下を表す正規表現
試行錯誤してようやくできたんだけど、きっと後で見てわけがわからなくなるだろうから今のうちにメモ。
apacheのLocationMatchで使う。
^/[^/]*/?([^/]+)?/?$
まず先頭がスラッシュで始まっていて、(^/)
次にスラッシュ以外の文字列が0個以上つづく。
ここまでで、
/
/index.html
/hogefuga
などなどがマッチ。
その次に / はあってもなくてもいい。(/?)
これで
/hogefuga/
がマッチする。
さらに1個以上の/以外の文字列がはあってもなくてもいい。(([^/]+)?)
これで
/hogefuga/foobaa
がマッチする。
更に最後に/はあってもなくてもいい。(/?)
これで
/hogefuga/foobaa/もマッチする。
?をみっつつなげているのがミソ。