1

私は助けが必要でした。文字列からドメインを取得するにはどうすればよいですか?

例: 「やあ、ナツメです。私のサイトhttp://www.mysite.com/をチェックしてください」

mysite.comだけを取得するにはどうすればよいですか?

出力例:

http://www.mysite.com/ (http を入力した場合)

www.mysite.com (http が入力されていない場合)

mysite.com (http と www の両方が入力されていない場合)

4

6 に答える 6

1

ええと... 「ドメイン」を持つものと見なすものを定義する方法が必要です。1 つの方法として、URL マッチングの正規表現を検索し、それを文字列に適用することがあります。それが成功した場合、少なくとも文字列に URL が含まれていることがわかり、引き続き URL を解釈してホスト名を探し、そこからドメインを抽出できます (おそらく)。

于 2012-06-27T12:58:48.597 に答える
1
myString = "Hi im Natsume, check out my site http://www.mysite.com/"
>>> a = re.search("(?P<url>https?://[^\s]+)", myString) or re.search("(?P<url>www[^\s]+)", myString)
>>> a.group("url")
'http://www.mysite.com/'
>>> myString = "Hi im Natsume, check out my site www.mysite.com/"
>>> a = re.search("(?P<url>https?://[^\s]+)", myString) or re.search("(?P<url>www[^\s]+)", myString)
>>> a.group("url")
'www.mysite.com/'
于 2012-06-27T13:00:49.713 に答える
1

すべてのサイトが同じ形式の場合、次のような正規表現を使用できます (この特定のケースで機能します)。

re.findall('http://www\.(\w+)\.com', url)

ただし、どちらの URL も解析してドメイン名を抽出できる、より複雑な正規表現が必要です。

于 2012-06-27T13:01:17.880 に答える
1
s= "Hi im Natsume, check out my site http://www.mysite.com/"
start=s.find("http://") if s.find("http://")!=-1 else s.find("https://")+1
t = s[start+11:s.find(" ",start+11)]
print(t)

出力: mysite.com

于 2012-06-27T13:07:20.077 に答える
1

正規表現を使用したい場合、1つの方法は-

>>> s = "Hi im Natsume, check out my site http://www.mysite.com/"
>>> re.findall(r'http\:\/\/www\.([a-zA-Z0-9\.-_]*)\/', s)
['mysite.com']

..「/」で終わる URL を考慮する

于 2012-06-27T13:03:09.823 に答える