正規表現 最終更新日 2010年11月12日 3:34 ここでは.NET Frameworkにおける正規表現と関連するクラスの使い方について解説します。 正規表現によるパターンマッチングと文字列操作 概略 Regexクラスを用いたパターンマッチング Regexクラスを用いた文字列操作 Regexクラスのインスタンスメソッドと静的メソッド .NETにおける正規表現 .NETで使用できる正規表現要素 その他の正規表現関連の機能 Regexクラス 正規表現を用いた文字列の探索 マッチ有無の判定 (Regex.IsMatch) マッチ箇所の探索 (Regex.Match) マッチ箇所の列挙・探索 (Regex.Matches) 正規表現を用いた文字列の加工 マッチ箇所の置換 (Regex.Replace) 別の文字列への置換 マッチした文字列への置換 (置換の正規表現要素) デリゲートを用いた置換 (MatchEvaluator) マッチ箇所での分割 (Regex.Split) 正規表現文字列の取得 (Regex.ToString) 正規表現要素のエスケープ・アンエスケープ (Regex.Escape, Regex.Unescape) 正規表現エンジンの動作オプション (RegexOptions) 大文字小文字の違いの無視 (RegexOptions.IgnoreCase) 複数行モード (RegexOptions.Multiline) 単一行モード (RegexOptions.Singleline) インバリアントカルチャによる比較 (RegexOptions.CultureInvariant) 探索方向の反転 (RegexOptions.RightToLeft) インラインでのオプション指定 正規表現エンジンのタイムアウト 正規表現と文字列操作の例 子音で始まる単語の抽出 IPアドレス(IPv4)の抽出 単語を文字の分類ごとに抽出する 全角英数を半角英数に変換する 正規表現の構造化および処理(マッチ・グループ・キャプチャ) マッチ箇所の参照および操作(Matchクラス) MatchCollectionクラス Match.NextMatchメソッド Match.Resultメソッド グループ(Groupクラス) グループ化とグループ番号 マッチ箇所全体を表すグループ ($0) GroupCollectionクラス 名前付きグループ グループと置換文字列 グループ化の除外 (非キャプチャグループ) 明示的なグループ化 (RegexOptions.ExplicitCapture) グループ化された正規表現による分割 (Regex.Split) グループ番号・グループ名の取得 正規表現内のグループの取得 (Regex.GetGroupNumbers/GetGroupNames) グループ番号とグループ名の対応の取得 (Regex.GroupNameFromNumber/GroupNumberFromName) マッチしたグループ名の取得 (Group.Name) キャプチャ(Captureクラス) Match・Group・Capture各クラスの関係とマッチ箇所 Match・Group・Captureの継承関係とコレクションクラスの対応 MatchCollection・GroupCollection・CaptureCollectionとジェネリックコレクションインターフェイス GroupCollectionとIReadOnlyDictionary グループとキャプチャを使った例 (CSVの処理) 正規表現のキャッシュとコンパイル 正規表現のキャッシュ 正規表現のコンパイル (RegexOptions.Compiled) 正規表現のプリコンパイル (Regex.CompileToAssembly) 正規表現をプリコンパイルしてアセンブリを生成する プリコンパイルされた正規表現の使用 .NET Framework以外の実装での正規表現のプリコンパイル .NET Frameworkで使用できる正規表現 文字クラス RegexOptions.Singlelineと"."の動作の違い 文字のエスケープ 量指定子 最短一致の量指定子 アンカー (アトミックゼロ幅アサーション) RegexOptions.Multilineと^, \Aの動作の違い RegexOptions.Multilineと$, \z, \Zの動作の違い 先読み・後読み(戻り読み) グループ グループ番号の割り振られ方 選択・条件分岐 前方参照 インラインオプション コメント 置換