URLからドメイン名を取得する - C#

URLからドメイン名を取得するコードを紹介します。

概要

こちらの記事ではURLの文字列からホスト名を取得しました。 状況によっては、ホスト名ではなくドメイン名を取得したい場合があります。この記事では、URLの文字列からドメイン名を取得するコードを紹介します。
ドメイン名を取得する場合は、ホスト名に対して正規表現で一致部分を抜き出します。

プログラム例

UI

下図のフォームを作成します。
テキストボックスを2つ、ボタンを1つ配置します。
(下図ではボタンが2つ配置されていますが、今回のプログラムで利用するのは1つのボタンのみです。)

コード

以下のコードを記述します。
フォームのcsファイル
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を愛用
最終更新日: 2023-12-27
作成日: 2023-12-02
iPentec all rights reserverd.