1

この質問は、スタック オーバーフローやウェブ全体で何度も聞かれていることを認識しています。実際、この問題に対する明確な解決策を示す約 20 のタブを開いています。

問題は、すべての答えが次のようなことを言っているということです

正規表現を使用することもできますが、それは良い考えではなく、確実に機能するわけではありませんが、代替手段は提供しません。

私の質問はこれです -テキストから URL を抽出できる信頼できる決定的な方法は本当にないのでしょうか?

4

3 に答える 3

2

正規表現は非常に強力なツールです。ほとんどの強力なツールと同様に、それらは深刻な誤解を受けており、多くのユーザーの手には危険であり、特定のタスクに対する最良の答えです。 文字列内の既知のパターンを照合することが、それらの存在の目的です。優れた URL パターンを手に入れると、設計されたコンテキストで常に機能します。誰もがそれらの使用をためらう理由は、特定のコンテキストに適した URL パターンを作成するのが難しい作業だからです。パターンは、実行環境 ( URLのオペレーティング システムなど)file:、使用中のプログラミング言語やライブラリなどによって異なります。

HTTP URL の特定のケースについては、ほとんどが準拠している明確な定義があり、ほぼすべての言語またはライブラリで信頼できる正規表現を構築できます。

于 2012-12-16T15:55:18.867 に答える
0

テキストから URL を抽出できる信頼できる決定的な方法は本当にないのでしょうか?

文字列形式のリストにあるものはすべて、注意深い例外処理が必要です。つまり、その処理を適切に行うと、正常に機能するはずです。

uri スキーマを使用した正規表現は、次のようなトリックを実行できます。

<a href="(?<url>http://.*?)".*>(?<text>.+?)<\/a>

ただし、これは.NET regexpであるため、プラットフォーム言語で動作するように変更する必要がある場合があります。

于 2012-12-15T12:30:33.730 に答える
0

任意の文字列から URL を抽出する場合は、正規表現を使用する以外に選択肢はありません。実際、URI スキームが定義されており ( http://en.wikipedia.org/wiki/URI_schemeを参照)、そのすべての側面を調べれば、正規表現は非常に信頼できます。

于 2012-12-15T12:34:29.667 に答える