2

現在、ServiceHandler にマップする 3 つの URL パスがあります。n個の引数をServiceHandlerに渡すことができる1つのきちんとした正規表現に3つを組み合わせるにはどうすればよいですか?

(r'/s/([^/]*)', ServiceHandler),
(r'/s/([^/]*)/([^/]*)', ServiceHandler),
(r'/s/([^/]*)/([^/]*)/([^/]*)', ServiceHandler)
4

3 に答える 3

1
(r'^/s/(([^/]*)((/[^/]+)*))$', ServiceHandler)

任意の量に一致するトリックを行う必要があります

/ s / foo / bar / baz / to / infinity / and / between /

次のようなことを行うことで、範囲に制限することもできます

^/s/(([^/]*)((/[^/]+){0,2}))$

これは次のようなものにのみ一致します

/s/foo/bar/baz
/s/foo/bar
/s/foo

だがしかし

/s/foo/bar/baz/pirate
/s
于 2009-10-15T13:15:12.290 に答える
0

これは任意の数で機能するはずです

(r'(?<!^)/([^/]+)', ServiceHandler)

urlresolvers.py を調べたので、re.search の代わりに regex.findall を使用して urlresolvers.py に正しい動作をパッチすることはできますが、これは機能しないことがわかります。

于 2009-10-15T21:01:47.297 に答える
0

次のようなものを試すことができます

(r'/s/([^/]*)/?([^/]*)/?([^/]*)', ServiceHandler)

ServiceHandler には常に 3 つのパラメーターを取得すると思いますが、使用されていないパラメーターは空の文字列になります。

于 2009-10-15T05:01:42.620 に答える