3

ルーティングシステムを考えています。次の2つの正規表現があると想像してください

  • pathpart1/pathpart2 =>controller1にルーティングする特定の一致
  • .*=>catch-controller2にルーティングするすべて

そして、それらをURLで一致させます(例:'pathpart1 / pathpart2')。

どちらも一致しますが、最初の正規表現の特定の一致を優先したいと思います。最初の正規表現が非常に具体的であり(したがって、その試合に参加したい)、2番目の正規表現が完全に具体的ではない(つまり、試合は基本的にすべての最後の手段です)...?

どのルートがルーターに登録されているかを事前に知らないため、特定の順序でループすることはできません(つまり、最初に特定し、他のすべてが一致しない場合はキャッチオールが最後になります)。

4

1 に答える 1

3

言い換えると、正規表現の範囲のカーディナリティを決定する方法を探しています。これは簡単な作業ではありません。たとえば、最も明白な複雑さを考えてみましょう。数量詞*+が関係している場合、どちらの場合も明らかにカーディナリティは∞です。しかし、私たちの直感でも、一部の無限大は他の無限大よりも「大きい」ように見えるため、そのような無限の数量詞を含むさまざまな正規表現を注文できるはずだと感じています。

(1)特異性による正規表現の順序付けを必要としない代替設定を検討するか、(2)大まかな近似を検討する必要があると思います。たとえば、正規表現の2つの「クラス」: 1つ以上の無限の数量詞(エスケープされていない*+、角括弧内にない)、およびない数量詞。

希望がないのは言うまでもありません!この質問をcs.stackexchange.comにも投稿してみてください。

于 2013-03-25T14:57:13.043 に答える