2

'user='stringから後に任意の文字列を抽出したい'/?user=hello&user=man&user='。この場合、それは私を得るでしょう'hello''man'そして''

私はここで立ち往生しています:

>>> import re

>>> s = '/?user=hello&user=man&user='
>>> re.findall("user=(.*)",s)
['hello&user=man&user=']

user=の最後の出現も で終わっていれば、欲しいものを見つけることができますが、この文字列で&見つける方法を知っている人はいますか?['hello', 'man', '']

4

3 に答える 3

11

私はreこれをやめて、これを目的としたツールを使用します:

from urlparse import urlsplit, parse_qs

s = '/?user=hello&user=man&user='
parse_qs(urlsplit(s).query, keep_blank_values=True)
{'user': ['hello', 'man', '']}
于 2012-09-29T14:26:08.937 に答える
3

次のことを試してください。

>>> s = '/?user=hello&user=man&user='
>>> re.findall(r"user=([^&]*)", s)
['hello', 'man', '']
于 2012-09-29T14:25:34.093 に答える
0

はい、「貪欲」ではない正規表現を作成し、user=テスト対象の (.*) の出現として最後に取得する必要があります。より具体的user=(.*)?user=(.*)?user=(.*)にすると、データの最初の出現のみに一致し、すべての文字の巨大なチャンクには一致しません。それは何ですか?演算子は正規表現で行います。

于 2012-09-29T14:26:24.650 に答える