1

次の形式のURLからID番号を抽出しようとしています

http://www.domain.com/some-slug-here/person/237570
http://www.domain.com/person/237570

これらのURLのいずれかにもパラメータが含まれている可能性があります

http://www.domain.com/some-slug-here/person/237570?q=some+search+string
http://www.domain.com/person/237570?q=some+search+string

上記のURLから「237570」のID値を取得するために次の式を試しましたが、それぞれが機能しますが、4つのURLシナリオすべてで機能します。

(?<=person\/)(.*)(?=\?)
(?<=person\/)(.*)(?=\?|\z)
(?<=person\/)(.*)(?=\??*)

私が見ているのは、237570を取得しているが、?URLでその後に続く文字。?、/、または文字列の終わりをヒットしたときにキャプチャを停止するとどうすればよいですか?

4

2 に答える 2

2

弦:

http://www.domain.com/some-slug-here/person/1234?q=some+search+string
http://www.domain.com/person/3456?q=some+search+string
http://www.domain.com/some-slug-here/person/5678
http://www.domain.com/person/7890

正規表現:

person\/(\d{1,})

出力:

>>> regex.findall(string)
[u'1234', u'3456', u'5678', u'7890']
于 2012-10-04T00:32:48.830 に答える
1

.*IDの照合には使用しないでください。.すべての文字に一致します(DOTALLオプションを使用しない限り、改行を除く)。数字の束に一致するだけです:(.*)->(\d+)

于 2012-10-03T23:54:18.243 に答える