Categories: C#

C# テキストから正規表現で電話番号やメールアドレスなどを読み取る

正規表現を使って、文字列の中から、電話番号やメールアドレスを取得するスクリプト。

電話番号を取得する

basetext に対象の文字列が入っているとします。

string basetext = "電話番号 00-0000-0000";
Regex reg = new Regex(@"(?0d{2,4}-d{2,4}-d{4}?)");
Match m = reg.Match(basetext);
string tel = m.Groups["tel"].Value;
Regex reg = new Regex(@"(?0d{2,4}-d{2,4}-d{4}?)");

で、電話番号だけを取り出す正規表現を設定した、Regexオブジェクトを作成します。

Match m = reg.Match(basetext);

で、正規表現に一致する、Matchオブジェクトを取得します。

string tel = m.Groups["tel"].Value;

で、一致した文字列を取得します。
もし、複数の一地があった場合、

m.NextMatch();

で、次の一致した文字列できます。
複数一致しているかどうかは、MatchオブジェクトのSuccessプロパティの真偽で確認できるので、次のようにすると、複数一致した電話番号をすべて取り出すことができます。

Regex reg = new Regex(@"(?0d{1,4}-d{1,4}-d{4}?)");

string ret = "";
for (Match m = reg.Match(basetext); m.Success; m = m.NextMatch())
{
        ret += m.Groups["tel"].Value + "rn";
        m.NextMatch();
}
return ret;

 

その他、文字列からいろいろ取得する

郵便番号を取得する

string basetext = "郵便番号 000-0000"; 
Regex reg = new Regex(@"(?0d{3}-d{4}-d{4}?)");
Match m = reg.Match(basetext);
string tel = m.Groups["postcode"].Value;

 

メールアドレスを取得する

string basetext = "メールアドレス test@hogehoge.com";
Regex reg = new Regex(@"(?[wd_-]+@[wd_-]+.[wd._-]+?)");
Match m = reg.Match(basetext);
string tel = m.Groups["mail"].Value;

 

URLを取得する

string basetext = "URL https://accelboon.com/tn/";
Regex reg = new Regex(@"(?https?://[w/:%#$&?()~.=+-]+?)");
Match m = reg.Match(basetext);
string tel = m.Groups["url"].Value;
nakaike