正規表現

正規表現に関連するクラス
クラス 用途
Regex 変更不可の正規表現
RegexCompilationInfo 正規表現をコンパイルしてアセンブリを作成するために使用する、正規表現についての情報
RegexRunner コンパイル済みの正規表現の基本クラス
(製品インフラストラクチャをサポートしており、コードから直接使用されることを想定していない)
RegexRunnerFactory コンパイルされた正規表現用の、RegexRunnerクラスを作成する
(製品インフラストラクチャをサポートしており、コードから直接使用されることを想定していない)
RegexMatchTimeoutException 正規表現パターン一致メソッドの実行時間が、そのタイムアウト間隔を超えるとスローされる例外
検索結果を表すクラス
クラス 用途
Match 単一の正規表現検索の結果
Group 単一のキャプチャ グループの結果
Capture 単一の部分式キャプチャの結果
MatchCollection 正規表現パターンを入力文字列に繰り返し適用したときにパターンに一致した、一連の対象
GroupCollection 1回の検索一致でキャプチャされた、グループのセット
CaptureCollection 1つのキャプチャ グループによって作成された、キャプチャのセット
System.Text.RegularExpressions 名前空間 | MSDN

Regexクラス

string text = "ab123cd99";
Regex regex = new Regex("[0-9]+");

Match match = regex.Match(text);
// match.value "123"

MatchCollection matches = regex.Matches(text);
// matches[0].Value "123"
// matches[1].Value "99"

string str = regex.Replace(text, "A");
// str "abAcdA"

if(regex.IsMatch(text))
{
    //
}

コンストラクタ

正規表現のパターンを指定し、インスタンスを生成します。コンストラクター - Regex クラス (System.Text.RegularExpressions) | MSDN

public Regex(
    string pattern,       // 正規表現パターン
    RegexOptions options, // 正規表現オプション
    TimeSpan matchTimeout // タイムアウト時間
)
Regex コンストラクター (String, RegexOptions, TimeSpan) (System.Text.RegularExpressions) | MSDN
RegexOptions 列挙型
メンバー名  
Compiled アセンブリにコンパイルすることを指示。起動は遅くなるが、実行は早くなる
CultureInvariant 言語の文化的な違いを無視することを指示
ECMAScript  
ExplicitCapture  
IgnoreCase  
IgnorePatternWhitespace  
Multiline  
None  
RightToLeft  
Singleline  
RegexOptions 列挙型 (System.Text.RegularExpressions) | MSDN

正規表現パターン

メソッド

Match

public Match Match(
    string input
)
Regex.Match メソッド (String) (System.Text.RegularExpressions) | MSDN

検索結果は戻り値のMatchオブジェクトで確認できます。それのSuccessプロパティがtrueならば一致しており、falseならば不一致です。一致した結果は、その部分文字列のValueプロパティで取得できます。取得できるのは最初の一致のみで、すべてを取得するにはMatches()を用います。

Matches

public MatchCollection Matches(
    string input
)
Regex.Matches メソッド (String) (System.Text.RegularExpressions) | MSDN

Replace

public string Replace(
    string input,      // 一致する対象を検索する文字列
    string replacement // 置換文字列
)
Regex.Replace メソッド (String, String) (System.Text.RegularExpressions) | MSDN

パターンに一致した場合は置換された文字列を、さもなくば置換前の元の文字列が返されます。

string text = "abc123def";
Regex regex = new Regex("[0-9]+");

string result = regex.Replace(text, "X"); // "abcXdef"

静的メソッド

くり返し使用しないパターンならば、静的メソッドで実行するのが簡単です。

Match match             = Regex.Match(text, "[0-9]+");
MatchCollection matches = Regex.Matches(text, "[0-9]+");
string str              = Regex.Replace(text, "[0-9]+", "A");

なおこれらは、次のように生成したオブジェクトからメソッドを呼び出すことと同義です。

Match match             = new Regex("[0-9]+").Match(text);
MatchCollection matches = new Regex("[0-9]+").Matches(text);
string str              = new Regex("[0-9]+").Replace(text, "A");

Matchクラス

Groupsプロパティ

一致したグループのコレクション (GroupCollection) を取得できます。

Groupクラス

個々のグループを表します。

string text = "ab_12 cd_34";
Regex regex = new Regex("([a-z]+)_([0-9]+)");

Match match = regex.Match(text);
// match.Value           "ab_12"
// match.Groups.Count    3
// match.Groups[0].Value "ab_12"
// match.Groups[1].Value "ab"
// match.Groups[2].Value "12"

MatchCollection matches = regex.Matches(text);
// matches[0].Groups[1].Value "ab"
// matches[1].Groups[1].Value "cd"

正規表現でのグループ化構成体 | MSDN

参考

リファレンス

参考書

MSDN (Microsoft Developer Network) から検索