正規表現の作成

正規表現とは、テキスト本文から特定の文字列を検索する際の照合に使用する文字列を定義したものです。 検索範囲のテキストと照合する文字パターンとして正規表現が使用されます。

正規表現を構築する方法は算術式を作成する方法とよく似ています。 さまざまなメタ文字と演算子で小さな式を組み合わせるきことで、より大きな式を作成します。

正規表現は、文字、文字セット、文字の範囲、代替表現などの要素で構成できます。 さらに、これらの要素を自由に組み合わせて使用することもできます。

正規表現の構築

正規表現は、こうしたさまざまな要素を 1 対の区切り記号で囲むことによって構築します。 次の例のように、JScript では、区切り記号として 1 対のスラッシュ文字 (/) が使用されます。

/expression/

正規表現の例

次の表に、代表的な正規表現の例を示します。

正規表現

説明

/^\s*$/

空白行と一致します。

/\d{2}-\d{5}/

2 桁の数字、ハイフン、および 5 桁の数字で構成される ID 番号と一致します。

/<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/

HTML タグと一致します。

通常文字

正規表現の最も単純な形式は、単一の通常文字です。これは検索範囲の文字列と比較されます。 たとえば、1 文字の正規表現として「A」と指定した場合、検索範囲の文字列に A が見つかるたびに一致と見なされます。

JScript における単一文字の正規表現の例を次に示します。

/a/
/7/
/M/

1 文字の正規表現をいくつかまとめて大きな式にすることもできます。 たとえば、正規表現 /the/ は、"the"、"there"、"other"、"over the lazy dog" などに含まれる "the" と一致します。

連結演算子は必要ありません。 間隔をあけることなく文字を並べる必要があるだけです。

メタ文字

正規表現には、通常文字に加え、メタ文字を使用することができます。 メタ文字の例として、\d があります。これは 1 桁の数字と一致します。

詳細については、「正規表現の構文」を参照してください。

通常文字は、メタ文字として割り当てられていない文字で、印刷できる文字と印刷できない文字のすべての文字で構成されます。 これには、大文字および小文字のすべてのアルファベット、すべての数字、すべての句読点、およびいくつかの記号が含まれます。

任意の文字との一致

ピリオド文字 (.) は、改行文字 (\n) を除き、文字列内の印刷される文字または印刷されない文字のうち、任意の 1 文字と一致します。 /a.c/ という正規表現は、"aac"、"abc"、"acc"、"adc"、"a1c"、"a2c"、"a-c"、"a#c" などと一致します。

検索文字列に含まれるピリオド (.) と一致させるには、正規表現でピリオドの前に円記号 (\) を指定します。 /filename\.ext/ という正規表現は、"filename.ext" と一致します。

一致文字のリスト

一致文字のリストを作成するには、1 つ以上の文字を角かっこ ([ と ]) で囲みます。

角かっこで囲まれた文字は、それぞれ、正規表現内の角かっこ表現の位置にある単一の文字とのみ一致します。 たとえば、/Chapter [12345]/ という正規表現は、"Chapter 1"、"Chapter 2"、"Chapter 3"、"Chapter 4"、"Chapter 5" などと一致します。

文字を直接指定する代わりに、文字の範囲を指定して一致文字を表現するには、ハイフン (-) を使用します。 /Chapter [1-5]/ という正規表現は、/Chapter [12345]/ と同じ結果をもたらします。

リストまたは範囲にないすべての文字を検索するには、リストの先頭にキャレット (^) を指定します。 たとえば、/[^aAeEiIoOuU]/ という正規表現は、母音以外のすべての文字と一致します。

詳細については、「一致文字のリスト」を参照してください。

量指定子

正規表現では、文字または文字列が繰り返される回数を量指定子で指定できます。

量指定子の適用対象は、その直前 (左側) にある式です。

量指定子は、出現回数の上限と下限の数値を中かっこ {} で囲んで指定します。 たとえば、c{1,2} は、アルファベット c の 1 回または 2 回の出現と一致します。

数値を 1 つだけ指定し、その後にコンマを指定しなかった場合、その値は上限として使用されます。 たとえば、c{3} は、ちょうど 3 文字のアルファベット c と一致するのに対し、c{5,} は、アルファベット c の 5 回以上の出現と一致します。

次の表に示す単一文字の量指定子を使用することもできます。

量指定子

明示的な量指定子

説明

*

{0,}

直前の要素と 0 回以上一致します。

+

{1,}

直前の要素と 1 回以上一致します。

?

{0,1}

直前の要素と 0 回または 1 回一致します。

正規表現の例と、それと一致する文字列を次の表に示します。

正規表現

量指定子の意味

一致する文字列

/Chapter [1-9][0-9]{0,}/ または

/Chapter [1-9][0-9]*/

[0-9] と 0 回以上一致します。

"Chapter 1"、"Chapter 25"、"Chapter 401320"

/Chapter [0-9]{1,2}/

[0-9] と 1 回または 2 回一致します。

"Chapter 0"、"Chapter 03"、"Chapter 1"、"Chapter 25"、"Chapter 40"

/Chapter [1-9][0-9]{0,1}/ または

/Chapter [1-9][0-9]?/

[0-9] と 0 回または 1 回一致します。

"Chapter 1"、"Chapter 25"、"Chapter 40"

詳細については、「JScript の量指定子」を参照してください。

行と単語の境界

アンカーを使用すると、正規表現の出現位置 (検索範囲の先頭と末尾、行頭と行末、単語の先頭と末尾など) を指定するこができます。 詳細については、「アンカー」を参照してください。

代替表現の指定

複数の代替表現を一致候補として指定するには、"|" 文字を使用します。 たとえば、JScript の /(Chapter|Section) [1-9]/ という正規表現は、"Chapter 1"、"Chapter 9"、"Section 2" などと一致します。 詳細については、「代替と部分式」を参照してください。

サブマッチの使用

かっこは、正規表現で部分式を作成するために使用されます。 結果のサブマッチは、プログラムで取得できます。 詳細については、「代替と部分式」を参照してください。

部分式は、正規表現から、また置換文字列から参照できます。 詳細については、「JScript での逆参照」を参照してください。

参照

概念

正規表現の構文

その他の技術情報

正規表現のプログラミング