ホスト名のトップレベルドメインの正確な表現を抽出することは、各トップレベルドメインレジストリがドメインの発行方法と定義されるサブドメインに関する独自のポリシーを自由に作成できるという事実によって複雑になります。これらを調整したり、標準を確立したりする標準化団体はないように思われるため、実際のTLDの決定はやや複雑な問題になっています。
Webブラウザは登録されたドメインにのみCookieを割り当て、セキュリティ上の理由から、Cookieをより広いレベルで割り当てることができないように注意する必要があるため、これらのブラウザには通常、何らかの形式ですべての既知のTLDのデータベースが含まれています。Firefoxにはかなり完全なデータベースがあることがわかりました。
http://hg.mozilla.org/mozilla-central/raw-file/3f91606bd115/netwerk/dns/effective_tld_names.dat
私は2つの特定の質問があります:
このリストを正規表現に変換するのはかなり簡単ですが、独自のリストを作成するよりも優れた解決策であるgemまたは参照正規表現はありますか?tld gemは、ルートレベルドメインの国レベルの情報のみを提供します。
Firefox TLDリストよりも優れたリファレンスはありますか?すべてのローカルGoogleサイトはこの仕様によって正しく解析されますが、これは完全なテストではありません。
そこに何もない場合、この種の操作を実行する宝石に興味がある人はいますか?この種のものはURIモジュールに存在するはずですが、明らかに欠落しています。
このファイルをRubyで使用可能な正規表現に変換する方法は次のとおりです。
TLD_SPEC = Regexp.new(
'[^\.]+\.(' + %q[
// ***** BEGIN LICENSE BLOCK *****
// ... (Rest of file)
].split(/\n/).collect do |line|
line.sub(%r[//.*], '').sub(/\s+$/, '')
end.reject(&:blank?).collect do |s|
Regexp.escape(s).sub(/^\\\*\\\./, '[^\.]+\.')
end.join('|') + ')$'
)