2017-07-01 4 views
1

私はすべての訪問者を「単一のサブディレクトリ」を1ページにし、すべての訪問者を「サブディレクトリを二重にする」ことを別のサイトに指摘したいと思います。例えば:app.yamlで正規表現を使用して仮想サブディレクトリを処理するにはどうすればよいですか?

/foo/ 
/new/ 
/north/ 
/1-j4/ 

/foo/bar/ 
/new/york/ 
/north/west/ 
/1-j4/a_990/ 

に対し1.appへのすべてのポイント、2.appへのすべてのポイントがありません。

が、私はそうのような、非貪欲正規表現のマッチングでこれを行うことができ考え出し:

- url: /(.*?)/$ 
    script: 1.app 

- url: /(.*?)/(.*?)/$ 
    script: 2.app 

を私の混乱が、両方の/ fooの/と/ fooの/バー/スクリプト1.appに解決。 "怠惰な"正規表現はマッチを得るための唯一の方法なので、それは中間の/を含むように強制しますか?どのように私はこれを行うことができますか?私は(\ w *?)を使ってみましたが、同じ結果を得ました。

答えて

1

.は改行文字以外の文字(デフォルト)と一致するため、/はまだ一致します。正規表現は、/以外の0個以上の文字に一致する無効化された文字クラス[^/]*に基づいて作成する必要があります。

ディレクトリを1つの部分に一致させるには、^([^/]*)/?$を使用し、2と一致させるには、^([^/]*)/([^/]*)/?$を使用します。

オンラインWebテスターでパターンを使用する場合は、デフォルトで/シンボルを正規表現の区切り文字として使用するため、ほとんどの場合/をエスケープする必要があります。

1

はい、(.*?)にはスラッシュが含まれているため、1.appに解決されます。 2.appハンドラを先に配置する場合は、必要な処理を行う必要があります。

- url: /(.*?)/(.*?)/$ 
    script: 2.app 

- url: /(.*?)/$ 
    script: 1.app 
関連する問題