URLからドメイン名を取得するコードと実行結果
URLからドメイン名を取得するコードと実行結果を紹介します。
概要
こちらの記事ではURLの文字列からホスト名を取得しました。
状況によっては、ホスト名ではなくドメイン名を取得したい場合があります。この記事では、URLの文字列からドメイン名を取得するコードを紹介します。
ドメイン名を取得する場合は、ホスト名に対して正規表現で一致部分を抜き出します。
プログラム例
UI
下図のフォームを作成します。
テキストボックスを2つ、ボタンを1つ配置します。
(下図ではボタンが2つ配置されていますが、今回のプログラムで利用するのは1つのボタンのみです。)
コード
以下のコードを記述します。
using System.Text.RegularExpressions;
namespace GetUrlElement
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e)
{
string URLStr = textBox1.Text;
Uri url = new Uri(URLStr);
string Host = url.Host;
Match match = Regex.Match(Host, @"[^\.]+\.[^\.]+$");
textBox2.Text += match.Value;
}
}
}
解説
ホスト名の取得部分は
こちらの記事を参照してください。
正規表現でホスト名からドメイン名を取得します。
Match match = Regex.Match(Host, @"[^\.]+\.[^\.]+$");
上記の正規表現式は次の意味になります。
正規表現式 | 意味 |
[^\.]+ | "."以外の文字が1文字以上 |
\. | "." |
[^\.]+ | "."以外の文字が1文字以上 |
$ | 末尾 |
末尾から判定して、
(.以外の文字).(.以外の文字)
となるパターンを抜き出します。
www.ipentec.com
であれば
ipentec.com
がマッチします。
Matchオブジェクトの一致した値をテキストボックスに表示します。
textBox2.Text += match.Value;
実行結果
プロジェクトを実行します。下図のウィンドウが表示されます。
上部のテキストボックスにURLの文字列を入力します。入力後[DomainName]のボタンをクリックします。
下部のテキストボックスにURLのドメイン名部分が表示されます。
他の入力の場合の例です。ドメイン名が取得できています。
入力文字列 | 結果 |
http://www.ipentec.com/test/abc | ipentec.com |
http://ipentec.com/test/xyz | ipentec.com |
http://mail.ipentec.jp/puch/10345 | ipentec.jp |
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用