C#で正規表現を使ったパターンマッチングの基本と実装例
正規表現(Regular Expression)とは、入力テキストに対して照合を行うためのパターンのことです。パターンは、1つ以上の文字リテラル、演算子、または構成要素から構成されます。
C#では System.Text.RegularExpressions 名前空間の Regex クラスを利用することで、文字列の中から特定のパターンに一致する部分を簡単に抽出できます。
ここでは、正規表現を使って「M」で始まる単語を抽出して表示する例を見ていきましょう。
サンプルコード
using System;
using System.Text.RegularExpressions;
namespace Demo {
class Program {
private static void showMatch(string text, string expr) {
Console.WriteLine("The Expression: " + expr);
MatchCollection mc = Regex.Matches(text, expr);
foreach (Match m in mc) {
Console.WriteLine(m);
}
}
static void Main(string[] args) {
string str = "Mandatory requirements for a Cricket Match Event!";
Console.WriteLine("Matching words that start with 'M': ");
showMatch(str, @"\bM\S*");
Console.ReadKey();
}
}
}実行結果
Matching words that start with 'M': The Expression: \bM\S* Mandatory Match
コードの解説
まず、検索対象となる文字列を用意します。
string str = "Mandatory requirements for a Cricket Match Event!";
この文字列には「Mandatory」「Match」という2つの単語が「M」で始まっています。これらすべての単語を抽出するために、次の正規表現パターンを使用しました。
@"\bM\S*"
このパターンを分解すると、以下のような意味になります。
- \b:単語の境界(ワードバウンダリ)を表します。単語の先頭に一致させるために使用します。
- M:文字「M」そのものに一致します。
- \S*:空白以外の任意の文字が0回以上続くことを表します。つまり、「M」に続く単語の残りの部分に一致します。
Regex.Matches メソッドは、指定した入力文字列内でパターンに一致するすべての箇所を MatchCollection として返します。あとは foreach ループで各一致結果を取り出し、コンソールに出力しています。
このように、正規表現を活用すれば、複雑な文字列検索やフィルタリング処理をわずか数行のコードで実現できます。メールアドレスの形式チェックや電話番号の抽出など、さまざまな場面で応用できるので、ぜひマスターしておきましょう。
-
Pythonの正規表現を使ったパターンマッチング入門
正規表現とは? 実際のプログラミングの世界では、文字列の解析処理はほとんどの場合、正規表現によって行われています。Pythonにおける正規表現とは、テキストのパターンを照合(マッチング)するための手法です。 Pythonには標準で「re」モジュールが付属しており、これによって正規表現の機能が提供されます。追加のインストールは不要です。 Pythonでの正規表現検索は、一般的に次のように記述します。 match = re.search(pattern, string) re.search()メソッドは、「正規表現パターン」と「検索対象の文字列」の2つの引数を受け取り、その文字列の中からパターン
-
Rubyのパターンマッチング入門:case/in構文でコードを読みやすくする
Rubyにおけるパターンマッチングについて、その仕組みとコードの可読性向上への活用方法を簡単に見ていきましょう。数年前の私のように、これを正規表現(Regex)のパターンマッチングと混同している方もいるかもしれません。「pattern matching」だけでGoogle検索すると、正規表現に近い定義の記事が上位に出てくることさえあります。正式には、パターンマッチングとは、あるデータ(文字列、トークンの列、タプルなど何でも)を別のデータと照合して検証するプロセスのことです。プログラミングにおいては、言語の能力に応じて、以下のようなことが可能になります。期待されるデータ型とのマッチング期待される