正規表現による 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やデータベースの記事なども担当。