2012-03-24 5 views
1

/?を含むパスに一致する正規表現を作成して、それがクエリー文字列かどうかを判断しようとしています。一致するpythonの正規表現照会文字列のパス

サンプル文字列はこのようになります:/mysite/path/to/whatever/?page=1

これまでのところ、私はこれがre.match(r'/\?', '/mysite/path/to/whatever/?page=1')

に一致するだろうと思ったが、それはあなたが必要としない

答えて

1

あなたの問題は、re.matchを使用していることです。この関数は文字列の先頭で一致するものを探します。だから、正規表現を'.*/\?'に変更するか、代わりにre.searchを使用してください。

+2

're.match'は、文字列の先頭にマッチ* *ではなく、完全な一致を探しません。 –

+0

@Petr:申し訳ありませんが、正しいことです。一定。 – cha0site

1

に一致していないようです正規表現はこちら。 in演算子:'/?' in the_stringを使用してください。


問題は、re.matchは文字列の先頭だけを調べることです。 REの機能が必要な場合は、代わりにre.searchを使用できます。

3

このコードはすでにあなたのために書かれています。車輪の再発明する必要はありませ:

import urlparse 
print urlparse.urlparse('/mysite/path/to/whatever/?page=1') 

http://docs.python.org/library/urlparse.html#module-urlparse

+0

+1ですが、DjangoのURLパターンの正規表現でこれを行うことができます。 – cha0site