
C#の正規表現?まるで魔法だね!文字列を自由自在に操って、キミのコードをレベルアップさせよう!
C# 正規表現とは?基本を理解しよう
C# における正規表現は、文字列の中から特定のパターンを見つけ出すための強力なツールです。テキスト処理、データ検証、ログ分析など、様々な場面で活用できます。この記事では、C# の正規表現の基本から応用まで、実例を交えながら徹底的に解説します。
正規表現を使用するには、System.Text.RegularExpressions
名前空間をインポートする必要があります。この名前空間には、正規表現を扱うためのクラスやメソッドが豊富に用意されています。
最も基本的なクラスは Regex
クラスです。このクラスを使って、正規表現パターンを定義し、文字列とのマッチングを行います。
Regex クラスの使い方:マッチングの基本
Regex
クラスの基本的な使い方を見ていきましょう。まずは、Regex
オブジェクトを作成し、正規表現パターンをコンストラクタに渡します。
using System.Text.RegularExpressions;
string pattern = "hello";
string input = "hello world";
Regex regex = new Regex(pattern);
if (regex.IsMatch(input))
{
Console.WriteLine("Match found!");
}
else
{
Console.WriteLine("Match not found.");
}
上記の例では、”hello” というパターンが “hello world” という文字列に含まれているかどうかをチェックしています。IsMatch
メソッドは、マッチが見つかった場合に true
を、見つからなかった場合に false
を返します。
Match
メソッドを使うと、最初に見つかったマッチに関する詳細な情報を取得できます。Matches
メソッドを使うと、文字列中のすべてのマッチをコレクションとして取得できます。
C# 正規表現:特殊文字とメタ文字
正規表現では、特殊文字とメタ文字を使って、より複雑なパターンを表現できます。いくつか例を見てみましょう。
.
(ドット): 任意の 1 文字にマッチします。
*
(アスタリスク): 直前の文字の 0 回以上の繰り返しにマッチします。
+
(プラス): 直前の文字の 1 回以上の繰り返しにマッチします。
?
(クエスチョンマーク): 直前の文字の 0 回または 1 回の出現にマッチします。
[]
(角括弧): 文字クラスを定義します。例えば、[abc]
は a, b, c のいずれか 1 文字にマッチします。
[^]
(否定の角括弧): 角括弧内の文字以外の文字にマッチします。例えば、[^abc]
は a, b, c 以外の任意の 1 文字にマッチします。
\d
: 数字にマッチします。
\w
: 英数字またはアンダースコアにマッチします。
\s
: 空白文字にマッチします。
^
: 文字列の先頭にマッチします。
$
: 文字列の末尾にマッチします。
string pattern = "a.*b"; // a で始まり、b で終わる文字列
string input = "acccb";
Regex regex = new Regex(pattern);
if (regex.IsMatch(input))
{
Console.WriteLine("Match found!");
}
else
{
Console.WriteLine("Match not found.");
}
正規表現の実例:メールアドレスの検証
正規表現は、メールアドレスの形式を検証するのにも役立ちます。完璧なメールアドレスの検証は非常に複雑ですが、基本的な形式をチェックする正規表現は次のようになります。
string pattern = "^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$";
string input = "test@example.com";
Regex regex = new Regex(pattern);
if (regex.IsMatch(input))
{
Console.WriteLine("Valid email address!");
}
else
{
Console.WriteLine("Invalid email address.");
}
正規表現の実例:URL の抽出
HTML テキストから URL を抽出することも可能です。
string pattern = "(https?://[\w./-]+)";
string input = "<a href=\"https://www.example.com\">Example</a>";
Regex regex = new Regex(pattern);
Match match = regex.Match(input);
if (match.Success)
{
Console.WriteLine("URL: " + match.Value);
}
else
{
Console.WriteLine("No URL found.");
}
参考リンク
まとめ
C# の正規表現は、文字列処理において非常に強力なツールです。基本を理解し、様々なパターンを使いこなせるように練習することで、より効率的なプログラミングが可能になります。この記事で紹介した内容を参考に、ぜひ正規表現を活用してみてください。