正規表現による URLの検出 - 正規表現

URLを検出する正規表現を紹介します。

概要

正規表現でURLを検出するパターンは下記です。

パターン1

http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?

URLに ~(チルダ)を含めて検出したい場合は、下記の正規表現を利用します。
http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=~]*)?

パターン2

下記のパターンではftpのURLも検出できます。
(https?|ftp)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)

解説

  • () はグループ化を表します。グループ化されたパターンは一文字とみなされます。(AB)+は AB,ABAB,ABABAB...を表します。
  • \w は英数字と下線(アルファベット、数字、下線)を表します。[0-9A-Za-z_] と同じ意味になります。
  • + は直前の文字の1回以上の繰り返しを意味します
  • []はグループを表します。括弧内で指定した文字のいずれかとなります。[-+.']は"-"か"+"か"."か"'"のどれかという意味になります。
  • * は直前の文字の0回以上の繰り返しを意味します。
  • \. は"."の文字を表します。\を除いた"."は任意の一文字を示す意味になるためです。
  • |(縦棒)は(A|B)と記述し、AまたはBのパターンの意味を持ちます。
  • ? は直前の文字が1つもしくは無いという意味です。

コード例(C#)

private void button1_Click(object sender, EventArgs e)
{
  Regex reg = new Regex(@"http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?");
  Match match = reg.Match(textBox1.Text);

  if (match.Success == true) {
    textBox2.Text = "マッチしました。";
  }
  else {
    textBox2.Text = "マッチしませんでした。";
  }
}
著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。
掲載日: 2011-02-03
iPentec all rights reserverd.