2017-08-15 9 views
-2

誰かがどのようにして正規表現のリンクのユーザ名とパスワードのみを変換してくれますか?URLを正規表現のみに変換するユーザ名とパスワードのパスワード

リンク= 'http://test.ddns.net:8000/get.php?username=9OsSVedOky&password=Oz2Vmx9GuW&type=list&output=tr'

URL = '$ http://test.ddns.net:8000/get.php?username=[a-zA-Z]|[0-9]|[ - @。 & +] | &パスワード= [a-zA-Z] | [0-9] | [$ - @。 & +] | &タイプ=申し訳ありませんリスト&出力= TR」

のURL = re.findall(URL、リンク) `

私は右の用語を使用していないが、私はコーディングに新たなんだ場合。

あなたは構文のように貧しい理解しているとき

+0

あなたはこれをしようとしたどのコードを表示することはできませんので、新しいですか? –

+0

正規表現にする必要はありますか? ['urllib.parse.parse_qs'](https://docs.python.org/3/library/urllib.parse.html#urllib.parse.parse_qs)を使用することができます。 –

+0

link = 'http://test.ddns.net:8000/get.php?username=9OsSVedOky&password=Oz2Vmx9GuW&type=list&output=tr' url = 'http://test.ddns.net:8000/get.php ?[username] = [a-zA-Z] | [0-9] | [$ -_ @。&+] |&password = [a-zA-Z] | [0-9] | [$ -_ @ +] |&タイプ=リスト&出力= TR」 のURL = re.findall(URL、リンク) これは私が – noni

答えて

1

は、正規表現でURLを解析することは一般的に悪い考えで、特に悪いありがとうございました。あなたはそれを行う必要があります(そしてあなたがすると言われているので、唯一の正当な理由がある)、そして

>>> import re 
>>> rx=re.compile(r"username=(?P<username>[^&]+).*password=(?P<password>[^&]+)") 
>>> m = rx.search(link) 
>>> m.groupdict()['username'] 
'9OsSVedOky' 
>>> m.groupdict()['password'] 
'Oz2Vmx9GuW' 

しかし、私はRawingの提案を支持した場合。それははるかに良いです:

>>> import urllib 
>>> qsp=urllib.parse.parse_qs(link.partition('?')[2]) 
>>> qsp['username'] 
['9OsSVedOky'] 
>>> qsp['password'] 
['Oz2Vmx9GuW'] 
+0

を試してきたものであることは、パスワードは、ユーザ名の前にあることができませんか? – sln

+0

はい、そうです。これは、正規表現が悪い考えである理由の1つです。そのようなバリエーションに対処することは非常に迅速に複雑になります。一方、パスワード*を最初にすることはできますが、ほとんど決してありません。しかし、正規表現を2つに分割し( '。*')、好きな場合はリンクを2回検索してください。 – BoarGules

+0

https://regex101.com/r/J1YIyZ/2正規表現はちょっと複雑すぎるかもしれません。 – sln

関連する問題