酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Xamarin Studioを使ってみよう!その17 - 正規表現を使う

Xamarin.iOSで正規表現を使って、パターンにマッチする文字列かどうかの判定と、マッチした文字列の中から意味のある文字列の抽出をする方法をご紹介します。

正しいメールアドレスか判定する

正規表現を使って入力された文字列が正しいメールアドレスかどうか判定します。正規表現を行うには、System.Text.RegularExpressions名前空間のRegexクラスを使用します。

// Eメールアドレスを判定する正規表現
var pattern = @"^([0-9a-zA-Z]([-\.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$";

var text1 = "saki.sasaki@example.com";
if (System.Text.RegularExpressions.Regex.IsMatch(text1, pattern))
{
    Console.WriteLine(string.Format("{0} is e-mail address", text1));
}

var text2 = "yamada@example.co.jp";
if (System.Text.RegularExpressions.Regex.IsMatch(text2, pattern))
{
    Console.WriteLine(string.Format("{0} is e-mail address", text2));
}

var text3 = "tanaka@foo";
if (!System.Text.RegularExpressions.Regex.IsMatch(text3, pattern))
{
    Console.WriteLine(string.Format("{0} is e-mail not address", text3));
}

HTML内のリンクを抽出する

// HTML文のリンクとテキストを抽出する正規表現
var pattern = "<a href=\"(?<url>.*?)\".*?>(?<text>.*?)</a>";

var text1 = "<a href=\"http://ch3cooh.jp/iphone/ios-data/save-file-document/\"" + 
    "title=\"NSMutableDataを使ってテキストをDocumentディレクトリへ保存する\">NSMutableDataを使って" + 
    "テキストをDocumentディレクトリへ保存する</a><span>4月 19, 2013</span>";
if (System.Text.RegularExpressions.Regex.IsMatch(text1, pattern))
{
    var match = System.Text.RegularExpressions.Regex.Match(text1, pattern);

    var url = match.Groups["url"].Value;
    var text = match.Groups["text"].Value;

    Console.WriteLine("url: {0}", url);
    Console.WriteLine("text: {0}", text);
}

参考