2

urllib を使用すると、文字列を解析して、それが有効な URL かどうかを確認できます。しかし、文に URL が含まれているかどうかを確認し、その URL を抽出するにはどうすればよいでしょうか。いくつかの巨大な正規表現を見てきましたが、本当に理解できないものは使用したくありません。

つまり、基本的に入力文字列があり、その文字列内のすべての URL を見つけて抽出する必要があります。

これについてのきれいな方法は何ですか。

4

2 に答える 2

2

を含む「単語」を検索し:urlparse(Python 3.0 以降では名前が変更されurllib.parseた) に渡して、それらが有効な URL であるかどうかを確認できます。

例:

possible_urls = re.findall(r'\S+:\S+', text)

http://or https://(または許可したいもの)で始まる URL のみに制限したい場合は、正規表現を使用してそれを行うこともできます。次に例を示します。

possible_urls = re.findall(r'https?://\S+', text)

URL に句読点を追加して、新しい有効な URL を意図せずに間違ったものにすることがあるため、ヒューリスティックを使用して URL の開始位置と停止位置を決定することもできます。次に例を示します。

http://example.com/の新しい外観を見ましたか? これはhttp://example.org/の完全なぼったくりです!

ここで、URL の後の句読点は、URL の一部であることを意図していません。上記のテキストに自動的に追加されたリンクから、StackOverflow がそのようなヒューリスティックを実装していることがわかります。

于 2011-03-19T19:27:52.120 に答える
1

「野生」からURLを抽出することは、(正しく行うために)トリッキーな試みです。Jeff Atwoodは、このテーマに関するブログ投稿を書きました。URLの問題また、John Gruberもこの問題に対処しています。URLを照合するための改善されたリベラルで正確な正規表現パターン また、この問題に取り組むためのコードをいくつか作成しました。URLリンク化(HTTP / FTP)(PHP / Javascriptの場合)。(私の正規表現は、HTMLマークアップに適用されるように設計されており、すでにリンクされているURL(つまり、<ahref = "http://example.com">リンク!</a>)をスキップしようとするため、特に複雑であることに注意してください。 )。

次に、 URI / URLの検証に関しては、調べたいドキュメントはRFC-3986です。私はこの主題を扱った記事に取り組んできました:正規表現URI検証。これも見てみたいと思うかもしれません。

しかし、あなたがそれに取り掛かるとき、これは簡単な仕事ではありません!

于 2011-03-20T00:55:50.203 に答える