URLからドメイン名を取得するコードと実行結果を紹介します。
こちらの記事ではURLの文字列からホスト名を取得しました。
状況によっては、ホスト名ではなくドメイン名を取得したい場合があります。この記事では、URLの文字列からドメイン名を取得するコードを紹介します。
ドメイン名を取得する場合は、ホスト名に対して正規表現で一致部分を抜き出します。
下図のフォームを作成します。
テキストボックスを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 |