0

重複の可能性:
URLからドメイン名を抽出する方法

URL、つまり次のURLからWebサイトを抽出したいconsole.aws.amazon.com

>>> ts
'https://console.aws.amazon.com/ec2/home?region=us-east-1#s=Instances,EC2 Management Console,12/3/2012 4:34:57 PM,11,0,,25806'
>>> re.match(ts,'(")?http(s)?://(.*?)/').group(0)

Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
re.match(ts,'(")?http(s)?://(.*?)/').group(0)
AttributeError: 'NoneType' object has no attribute 'group'

この正規表現をJSで試してみたところ、うまくいきました。これがJSで一致する理由はありますが、Pythonでは機能しませんか?

4

3 に答える 3

5

あなたはあなたの試合を間違ってやっています。Python docoの発言:

re.match(pattern, string, flags=0)

あなたがやっている:

re.match(string, pattern)

したがって、次のように変更するだけです。

 re.match('(")?http(s)?://(.*?)/', ts).group(0)
于 2013-01-09T02:28:28.937 に答える
5

urlparseを使用する

>>> from urlparse import urlparse
>>> u = 'https://console.aws.amazon.com/ec2/home?region=us-east-1#s=Instances,EC2 Management Console,12/3/2012 4:34:57 PM,11,0,,25806'
>>> p = urlparse(u)
>>> p
ParseResult(scheme='https', netloc='console.aws.amazon.com', path='/ec2/home', params='', query='region=us-east-1', fragment='s=Instances,EC2 Management Console,12/3/2012 4:34:57 PM,11,0,,25806')
>>> p.netloc
'console.aws.amazon.com'
>>> 
于 2013-01-09T02:32:33.173 に答える
0

これには、いつでもstr.partitionメソッドを使用できます。

print(ts.partition('//')[2].partition('/')[0])
>>> console.aws.amazon.com

正規表現はこれには少しやり過ぎです。

于 2013-01-09T02:25:59.450 に答える