2017-03-27 8 views
1

私は役に立たないテキストの中で、URLを特徴とするテキストブロックを処理するPythonコードを書いています。テキストブロックのうち、私はドメインだけを必要とし、完全なURLは必要としません。例入力:だからここURLのドメイン部分のみをregexと照合するにはどうすればよいですか?

47.91.158.176 or 54.145.185.110 port 80 - gooolgeremf.top - GET /search.php 
47.90.205.113 or 35.187.59.173 port 80 - voperforseanx.top/site/chrome_update.html 

私だけgooolgeremf.topと一致voperforseanx.top必要がありますが、私が書いた正規表現もsearch.phpchrome_update.htmlと一致します。

私が考えているのは、正規表現が/の後で一致しなくてはならないということです。しかし、私はそれを実装する方法、特にテキストファイル全体の最初の/の後に現れる一致するドメインを防ぐ方法を知らない。

それは私のコードでは、これまで動作する方法:

regexdm="[A-Za-z0-9]{1,}\.[A-Za-z0-9]{1,10}\.?[A-Za-z]{1,}\.?[A-Za-z]{1,}" 
dmsc=re.findall(regexdm, iocsd.read()) 
+0

FQDN /ホスト名、またはドメイン名のみを意味しますか? – mootmoot

答えて

2

デリミタの条件を追加することをおすすめします。ドメインとそれの後のスラッシュの前に切りつけ、前方のドメイン名を提供するだけのスペースで囲まれていてもよい、ラインの開始/終了し、2、正規表現は次のようになります。

(?: |//|^)([A-Za-z0-9]{1,}\.[A-Za-z0-9]{1,10}\.?[A-Za-z]{1,}\.?[A-Za-z]{1,})(?: |/|$) 

デモ:https://regex101.com/r/TQKlDP/1

+0

test.ukのような場合があります! – RaminNietzsche

+1

RaminNietzsche:元の正規表現では、このようなドメイン名(TLDに3文字未満のもの)が許可されていないためです。私はそれがドメイン名フィルタがあまりにも制限的で誤っているように見えるが、そのような制限が意図的である(または少なくとも許容可能である)という仮定で回答を準備したが、そのようなドメイン名をテキストの他の部分。 –

1

正規表現はそれを行うための最も簡単な方法はありませんが、あなたはurlparse.urlparse使用する必要があります。

from urlparse import urlparse 
parsed_uri = urlparse('http://voperforseanx.top/site/chrome_update.html') 
print parsed_uri.netloc 

voperforseanx.top 
を与えます

ただし、f正規表現を使ってURLを処理する方法は次のとおりです。Getting parts of a URL (Regex)

+0

質問入力に表示されているように 'http://'を削除すると、netlocはドメインを表示しません。戻り値なし。 – nivhanin

0

あなたの場合

str = "47.90.205.113 or 35.187.59.173 port 80 - voperforseanx.top/site/chrome_update.html" 
parsed_uri = str.split()[6].split('/')[0] 

そして、あなたがドメインを取得することができます:文字列パターンは、まさにそのように、あなたがこれを行うことができます。 Pythonの2.7.13、別の方法の例(入力パターンに依存)で

0

:この中

str = "47.90.205.113 or 35.187.59.173 port 80 - voperforseanx.top/site/chrome_update.html" 
parsed_uri = str.split()[6].split('/')[0] 
print parsed_uri 
>> voperforseanx.top 
0
(\b[\w\.]+\.[a-zA-Z]{2,}\b)(.+)$ 

正規表現:

(\b[\w\.]+\.[a-zA-Z]{2,}\b) 

一部、何をあなたにマッチします探している、残りはスクラップです。動作させるには、この正規表現にgmi修飾子が必要です。

+0

「gmi修飾子」とは何ですか?あなたはリファレンスがありますか? –

+0

http://www.ciaomondo。it/regular-expressions/english-guide.php#flagsこのガイドには簡単な説明があります – q81

関連する問題