0

この表現を少し単純化したい。ルックアップなどを使用してこれを行うより良い方法はありますか? 正規表現に関しては、私はかなり後輩です。パラメータ $3、$5、および $7 パラメータはオプションです。$1が必要です。

^
/application/
([0-9a-zA-Z_]+)
([\/]([0-9a-zA-Z_]+))?
([/\?|\?|\/]([^\?]*))?
([\?](.*))?
$

service => $1
target  => $3
args    => $5
filter  => $7

/application/blender/banana?add=milk.

ところで、私はRegExrを使用して式を作成およびテストしています。聞いたことがない場合は、これは優れたツールです。

4

1 に答える 1

1

これ:

([\/]([0-9a-zA-Z_]+))?

次のように簡略化できます。

(\/[0-9a-zA-Z_]+)?

と:

([\?](.*))?

次のように簡略化できます。

(\?.*)?

+および*(および も?) は前の項目のみに適用されるためです。

これが何であるかわかりません:

[/\?|\?|\/]

であるはずです。おそらくあなたは次のことを意味します:

(?:/\?|\?|\/)

つまり、/?または?またはのいずれか/です。((?:...)は非キャプチャ グループです。)

これは与える:

^
/application/
([0-9a-zA-Z_]+)
(\/[0-9a-zA-Z_]+)?
((?:/\?|\?|\/)[^?]*)?
(\?.*)?
$

service => $1
target  => $2
args    => $3
filter  => $4
于 2012-01-18T20:03:03.057 に答える