言語としての正規表現

正規表現言語は、テキストを操作することを目的としてデザインおよび最適化されています。この言語は、リテラル (通常の) テキスト文字とメタ文字という 2 種類の基本文字から構成されます。正規表現に、正規表現としての処理能力を与えるのはメタ文字セットです。

DOS ファイル システムで任意の 1 文字または文字グループを表すために使用されている ? メタ文字や * メタ文字は、一般によく知られています。DOS のファイル コマンド COPY *.DOC A: は、ファイル名拡張子 .DOC を含むすべてのファイルを、ドライブ A に挿入されたディスクにコピーするように、ファイル システムに指示します。このメタ文字 * は、ファイル名拡張子 .DOC の前にあるすべてのファイル名を表します。正規表現では、この "メタ文字を使用する"という基本思想が、何度も拡張されています。正規表現に用意されている多数のメタ文字を使用すると、かなり複雑なテキストと一致する表現を、比較的少ない文字数で記述できます。

たとえば、正規表現 \s2000 をテキスト本文に適用すると、テキスト内に出現する任意の空白文字 (空白やタブなど) に続く文字列 "2000" のすべてが一致します。

Noteメモ :

C++、C#、または JScript を使用する場合に、エスケープ文字に含まれる円記号がリテラル文字であることを示すには、特殊なエスケープ文字 (\s など) の前に円記号を追加 (たとえば "\\s2000") する必要があります。円記号を追加しない場合、正規表現エンジンは、\s を構成する円記号と s を 2 つの独立した演算子として扱います。Visual Basic 2005 を使用する場合は、この円記号を追加する必要はありません。C# を使用する場合は、C# のリテラル文字列を使用できます。C# のリテラル文字列では、先頭に @ を付けることにより、エスケープを無効にできます (例: @"\s2000")。

正規表現では、より複雑な検索も実行できます。たとえば、名前付きグループと前方参照を使用した正規表現 (?<char>\w)\k<char> を使用すると、隣接する同じ文字のペアが検索文字列となります。"I'll have a small coffee" という文字列に適用すると、"I'll"、"small"、および "coffee" という単語が一致します。この正規表現の詳細については、「前方参照」を参照してください。

以降のセクションでは、.NET Framework の正規表現言語を定義するメタ文字セットの詳細と、アプリケーションに正規表現を実装するための正規表現クラスの使用方法について説明します。

参照

関連項目

System.Text.RegularExpressions

概念

正規表現クラス

その他の技術情報

正規表現の動作の詳細
正規表現の例
正規表現言語要素