URIのドメイン部分のみを正規表現とどのように一致させることができますか?私は多くの例を見ていますが、サブドメインも同じです。私が探しているのは、ドメインだけをキャプチャすることですが、わかりません。正規表現:URIのドメイン一致
したがって、http://foo.google.tdl/bar
はgoogle
と一致する必要があります。
2番目の質問として、私はVB.NETプログラムでこれを実装しようとしています。正規表現なしでそれを行うための他の方法がありますか?
URIのドメイン部分のみを正規表現とどのように一致させることができますか?私は多くの例を見ていますが、サブドメインも同じです。私が探しているのは、ドメインだけをキャプチャすることですが、わかりません。正規表現:URIのドメイン一致
したがって、http://foo.google.tdl/bar
はgoogle
と一致する必要があります。
2番目の質問として、私はVB.NETプログラムでこれを実装しようとしています。正規表現なしでそれを行うための他の方法がありますか?
これを試してみてください:
^[^\/]+:\/\/[^\/]*?\.?([^\/.]+)\.[^\/.]+(?::\d+)?\/
http://www.rubular.com/r/Uv5ON7eAz4
^ # Match the beginning of the string
[^\/]+:\/\/ # Match the protocol (e.g. http://)
[^\/]*? # Non-greedy match of the sub-domains
\.? # Optional . (for when a sub-domain is used)
([^\/.]+) # Group the domain
\. # . between domain and tld
[^\/.]+ # tld
(?::\d+)? # Optional port
\/ # Slash between tld and path
はVB.NETを知らないが、あなただけのドメイン部分をしたい、とあなたは確信している場合は、常に同じを持っていますプロトコルを使用すると、次の4つの簡単な手順で目的を達成できます。
はPythonでこれはとほぼ同等で、次のようになります。あなたの特定のケース(HTTP接頭辞、トップレベルドメイン)のための
uri = uri.replace('http://', '')
uri = uri.split('/', 1)[0]
uri = uri.rsplit('.', 1)[0]
uri = uri.rsplit('.', 1)[1]
明らかにこれだけ作品が、提供URI場合は動作するのに十分な一般的ですプロトコルを指定しておらず、パスがなく、サブドメインもありません。
そしてポートはありません:-) – Joey
したがって、example.comはドメインを「co」にします。それは正しいことができません – justintime
@justintime良い点。これを正確に解決するには、すべてのtldのリストが必要です。そうでなければ 'foo.bit.ly'をどのように扱うのでしょうか? – marcog