-2

通常のURLを検索および/または解析するための解決策はたくさんありますが、それらのどれも任意のテキスト、つまり複数行に分割されたURLを処理しませんか?文字の後に改行を入れることができるURLをどのように見つけますか?

注:URLの個々の部分には興味がありません。特定のテキスト内のすべてのURLを検索して、それらをリンクに変換したいだけです(たとえば、プレーンな電子メールテキストのように)。

例:

Text text text text text. Look at this:
http://stackoverfl
ow.com/
questions/15252042/
find-urls-in-text

Question question question.
4

1 に答える 1

0

いくつかのアプローチが可能です。

1)各通常の文字の後に空白規則を使用して正規表現を記述します。これは確かに正規表現パターンを爆破しますが、最も柔軟なものです。改行をキャッチするには、DOT_ALLモードを使用します。ただし、DOT_ALLは、次のアプローチと同じ問題を引き起こします。

2)(一時的に)改行を削除し、通常の正規表現パターンマッチングを使用します。ただし、このアプローチには問題があります。必要以上のテキストを含めるか(URLの最後に)、URLが見つからない(改行が先頭にある場合は、プロトコル文字列を台無しにする)可能性があるためです。

2a)2)の変更は、たとえば最初のURL部分(たとえば、www、httpなど)を探した後など、特定の改行のみを削除するいくつかの一致試行を行うことです。認識時間が二次的な場合にのみ可能です。

3)ドメイン固有の知識でタスクを簡単にします。たとえば、改行が発生する可能性がある場所がわかっている場合(または、特定の位置でのみ発生する場合)、これらの特定のケースを探して、最初に解決します。次に、通常の正規表現検索に戻ります。

3a)3)のバリエーションは、URLの開始と停止を見つけるために、完全な空白ルールを持つ正規表現を使用して、プロトコルとページ拡張を具体的に探すことです。これは明らかに、protocol/filename_with_extensionが常に存在する場合にのみ機能します。見つかったトークンを空白のない通常のトークンに変換し(ただし、プロトコルの前と拡張子の後にスペースを含めます)、テキスト内のすべての改行を削除します。これで、URLを通常の正規表現と一致させることができます。

確かにもっと多くのバリエーションが可能ですが、一般的な考え方は同じです。

于 2013-03-09T10:33:06.117 に答える