いくつかのアプローチが可能です。
1)各通常の文字の後に空白規則を使用して正規表現を記述します。これは確かに正規表現パターンを爆破しますが、最も柔軟なものです。改行をキャッチするには、DOT_ALLモードを使用します。ただし、DOT_ALLは、次のアプローチと同じ問題を引き起こします。
2)(一時的に)改行を削除し、通常の正規表現パターンマッチングを使用します。ただし、このアプローチには問題があります。必要以上のテキストを含めるか(URLの最後に)、URLが見つからない(改行が先頭にある場合は、プロトコル文字列を台無しにする)可能性があるためです。
2a)2)の変更は、たとえば最初のURL部分(たとえば、www、httpなど)を探した後など、特定の改行のみを削除するいくつかの一致試行を行うことです。認識時間が二次的な場合にのみ可能です。
3)ドメイン固有の知識でタスクを簡単にします。たとえば、改行が発生する可能性がある場所がわかっている場合(または、特定の位置でのみ発生する場合)、これらの特定のケースを探して、最初に解決します。次に、通常の正規表現検索に戻ります。
3a)3)のバリエーションは、URLの開始と停止を見つけるために、完全な空白ルールを持つ正規表現を使用して、プロトコルとページ拡張を具体的に探すことです。これは明らかに、protocol/filename_with_extensionが常に存在する場合にのみ機能します。見つかったトークンを空白のない通常のトークンに変換し(ただし、プロトコルの前と拡張子の後にスペースを含めます)、テキスト内のすべての改行を削除します。これで、URLを通常の正規表現と一致させることができます。
確かにもっと多くのバリエーションが可能ですが、一般的な考え方は同じです。