2

フリーテキスト内のURLと適切に一致する正規表現を作成するためのサポートが必要です。

  • 図式
    • 次のいずれか:ftphttphttpsftpsはプロトコルですか?)
  • オプションのユーザー(およびオプションのパス
  • ホスト(IDNをサポート)
    • wwwおよびサブドメインのサポート(IDNのサポートあり)
    • TLDの基本的なフィルタリング([a-zA-Z]{2,6}私は十分だと思います)
  • オプションのポート番号
  • パス(オプション、Unicode文字をサポート)
  • クエリ(オプション、Unicode文字をサポート)
  • フラグメント(オプション、Unicode文字をサポート)

これが私がサブドメインについて知ることができたものです:

「サブドメイン」は、絶対的な依存関係ではなく、相対的な依存関係を表します。たとえば、wikipedia.orgはorgドメインのサブドメインを構成し、en.wikipedia.orgはドメインwikipedia.orgのサブドメインを構成します。理論的には、この細分化は127レベルまで下がることができ、ドメイン名全体が全長255文字を超えない限り、各DNSラベルには最大63文字を含めることができます。

ドメイン名自体に関しては、信頼できるソースは見つかりませんでしたが、非IDNの正規表現(IDN互換バージョンの記述方法がわかりません)は次のようなものだと思います。

[0-9a-zA-Z][0-9a-zA-Z\-]{2,62}

誰かがこの正規表現で私を助けたり、良い方向を教えてくれますか?

4

3 に答える 3

4

DaringFireballで有名なJohnGruberが最近投稿し、URLを認識する優れた正規表現文字列の探求について詳しく説明しました。彼が思いついたのはこれでした:

\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))

これは、Unicodeを含むURLでも問題ないようです。スキーム、ユーザー名、パスワードなど、探しているものの残りを取得するには、少し変更を加える必要があります。AlanStormは、Gruberの正規表現パターンを説明する記事を書きました。だから、一度だけ書く-手がかりがない-どうやって読むか-もう一度!)。

于 2009-12-29T15:06:20.483 に答える
0

プロトコルが必要で、誤検知についてあまり心配していない場合は、空白以外のすべての文字を一致させるのがはるかに簡単です。://

于 2009-12-29T14:46:27.950 に答える
0

これにより、ほとんどの方法でそこにたどり着きます。より洗練されたものが必要な場合は、テストデータを提供してください。

(ftp|https?)://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?
于 2009-12-29T14:47:50.707 に答える