正規表現は、テキストデータから特定のパターンに一致する文字列を検索、置換、または抽出するための強力な機能です。この記事では、C#で正規表現による文字列の処理について、いくつかサンプルを紹介します。
C#における正規表現の使い方
C#では、System.Text.RegularExpressions 名前空間内にある Regex クラスを利用して正規表現を扱います。基本的な使い方は以下の通りです。
using System;
using System.Text.RegularExpressions; // ★正規表現の使用に必要
class Program
{
static void Main()
{
string input = @"処理対象の文字列";
string pattern = @"正規表現パターン";
// 正規表現のパターンマッチを実施
Match match = Regex.Match(input, pattern);
// マッチする文字列がある場合
if (match.Success)
{
Console.WriteLine("一致した文字列: " + match.Value);
}
}
}
基本的な正規表現パターンの例
- アルファベット
- 大文字のみ:
[A-Z]
- 小文字のみ:
[a-z]
- 大文字と小文字:
[A-Za-z]
- 大文字のみ:
- 数字
[0-9]
または\d
- 文字
\w
(アルファベット、数字、アンダースコア_
などの1文字にマッチ)
- スペース
\s
(スペース、タブ、改行などの空白文字にマッチ)
- タブ
\t
- []で指定した文字にマッチ
[abc]
(a
、b
、c
のいずれかにマッチ)[^abc]
(a
、b
、c
以外の文字にマッチ)
サンプルコード:4桁の数字を取り出す
以下は、文字列の中に含まれる4桁の数字を取り出すサンプルコードです。
using System;
using System.IO;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string input = @"Today is January 24, 2024.";
string pattern = @"\d\d\d\d"; // 4桁の数字にマッチするパターン。\d{4}と書いても良い
// 正規表現のパターンマッチを実施(1)
Match match = Regex.Match(input, pattern);
// パターンにマッチする文字列がある場合(2)
if (match.Success)
{
// 見つかった文字を表示(3)
Console.WriteLine("見つかった数字: " + match.Value); // "2024" が出力される
}
}
}
実行結果
見つかった数字: 2024
続行するには何かキーを押してください . . .
(1)Regex.Matchメソッドで、正規表現を使用した文字列のパターンマッチを行うことができます。この例では、変数patternに格納された正規表現パターンで、入力文字列のパターンマッチを行います。パターンマッチの結果はMatchオブジェクトに返されます。
(2)MatchオブジェクトのSuccessプロパティで、パターンマッチが成功したかどうかを判定します。trueの場合は、入力文字列へのパターンマッチが成功したことを示します。
(3)パターンにマッチした文字列は、MatchオブジェクトのValueプロパティで取得可能です。
まとめ
本記事では、C#における正規表現の使い方の基本について紹介しました。
正規表現は、多くのプログラミング言語やツールでサポートされています。正規表現を一度学んでしまえば、異なる環境でも同様の方法でテキスト処理を行うことができ、小さな投資で大きなリターンが得られるスキルと言えます。