正規表現の構文

正規表現は、通常の文字 (a ~ z など) と、"メタキャラクタ" という特殊文字から構成される文字列のパターンです。パターンによって、テキスト本文を検索するときに一致する 1 つ以上の文字列を指定します。正規表現は、検索対象の文字列と文字パターンを一致させるためのテンプレートとして機能します。

正規表現の例をいくつか次に示します。

JScript VBScript 一致結果
/^\[ \t]*$/ "^\[ \t]*$" 空行に一致
/\d{2}-\d{5}/ "\d{2}-\d{5}" 2 桁の数字、ハイフン、5 桁の数字で構成される ID 番号を確認
/<(.*)>.*<\/\1>/ "<(.*)>.*<\/\1>" HTML タグに一致

次の表は、メタキャラクタの全リストと、正規表現でのメタキャラクタの動作を示しています。

文字 説明
\ 次に続く文字が特殊文字、リテラル、後方参照、または 8 進エスケープであることを示します。たとえば、"n" は文字 "n" と一致します。'\n' は改行文字と一致します。"\\" は "\" と、"\(" は "(" と一致します。
^ 入力文字列の先頭と一致します。RegExp オブジェクトの Multiline プロパティが設定されている場合、^ は '\n' または '\r' の直後にも一致します。
$ 入力文字列の末尾と一致します。RegExp オブジェクトの Multiline プロパティが設定されている場合、$ は '\n' または '\r' の直前にも一致します。
* 直前のサブ式と 0 回以上一致します。たとえば、"zo*" は "z" とも "zoo" とも一致します。* は {0,} と同じ意味になります。
+ 直前のサブ式と 1 回以上一致します。たとえば、"zo+" は "zo" や "zoo" とは一致しますが、"z" とは一致しません。+ は {1,} と同じ意味になります。
? 直前のサブ式と 0 回または 1 回一致します。たとえば、"do(es)?" は "do" または "does" の"do" と一致します。? は {0,1} と同じ意味になります。
{n} n には 0 以上の整数を指定します。正確に n 回一致します。たとえば、'o{2}' は "Bob" の 'o' とは一致しませんが、"food" の 2 つの o とは一致します。
{n,} n には 0 以上の整数を指定します。少なくとも n 回一致します。たとえば、'o{2}' は "Bob" の "o" とは一致しませんが、"foooood" のすべての o とは一致します。'o{1,}' は 'o+' と同じ意味になります。'o{0,}' は 'o*' と同じ意味になります。
{n,m} m および n には 0 以上の整数を指定します。nm 以下です。nm 回一致します。たとえば、"o{1,3}" は "fooooood" の最初の 3 つの o と一致します。'o{0,1}' は 'o?' と同じ意味になります。カンマと数の間には、スペースを入れないでください。
? ほかの修飾子 (*, +, ?, {n}, {n,}, {n,m}) の直後に指定すると、一致パターンを制限することができます。既定のパターンでは、できるだけ多数の文字列と一致するのに比べて、制限されたパターンでは、できるだけ少ない文字列と一致します。たとえば、文字列 "oooo" に対して、'o+?' を指定すると 1 つの "o" と一致し、'o+' を指定するとすべての 'o' と一致します。
. "\n" を除く任意の 1 文字に一致します。'\n' など、任意の文字と一致するには、'[.\n]' などのパターンを指定します。
(pattern) pattern と一致した文字列を記憶します。記憶した一致文字列は、VBScript の SubMatches コレクションまたは JScript の $0...$9 プロパティを使用して Matches コレクションから取得できます。かっこ ( ) と一致するには、'\(' または '\)' を指定します。
(?:pattern) pattern と一致しても、その文字列は記憶されず、後で使用することはできません。"or" を意味する (|) を使用してパターンの一部を結合するときに便利です。たとえば、'industry|industries' と指定する代わりに、'industr(?:y|ies)' と指定する方が簡単です。
(?=pattern) pattern で指定した文字列が続く場合に一致と見なされます (肯定先読み)。一致した文字列は記憶されず、後で使用することはできません。たとえば、"Windows(?=95|98|NT|2000)" は "Windows 2000 " の "Windows" には一致しますが、"Windows 3.1" の "Windows " には一致しません。先読み処理では、読み進まれた文字は処理済みとは見なされません。一致の検出後、次の検索処理は先読みされた文字列の後からではなく、一致文字列のすぐ後から開始されます。
(?!pattern) pattern で指定しない文字列が続く場合に一致と見なされます (否定先読み)。一致した文字列は記憶されず、後で使用することはできません。たとえば、"Windows(?=95|98|NT|2000)" は "Windows 3.1" の "Windows" には一致しますが、"Windows 2000" の "Windows " には一致しません。先読み処理では、読み進まれた文字は処理済みとは見なされません。一致の検出後、次の検索処理は先読みされた文字列の後からではなく、一致文字列のすぐ後から開始されます。
x|y x または y と一致します。たとえば、'z|food' は "z" または "food" と一致します。"(z|f)ood" は "zoo" または "food" に一致します。
[xyz] 文字セットを指定します。角かっこで囲まれた文字の中のいずれかに一致します。たとえば、'[abc]' は "plain" の 'a' と一致します。
[^xyz] 除外する文字セットを指定します。角かっこで囲まれた文字以外の文字に一致します。たとえば、'[^abc]' は "plain" の 'p' と一致します。
[a-z] 除外する文字の範囲を指定します。指定された範囲にある文字と一致します。たとえば、"[a-z]" は小文字の英字 "a" から "z" の範囲にある任意の文字と一致します。
[^a-z] 否定の文字の範囲。指定範囲以外の文字と一致します。たとえば、"[^a-z]" は小文字の英字 "a" から "z" の範囲外にある任意の文字と一致します。
\b 単語の境界と一致します。単語の境界とは、単語とスペースとの間の位置のことです。たとえば、'er\b' は "never" の 'er' と一致しますが、"verb" の 'er' とは一致しません。
\B 単語境界以外と一致します。たとえば、'er\B' は "verb" の 'er' と一致しますが、"never" の 'er' とは一致しません。
\cx x で指定した制御文字と一致します。たとえば、\cM は Control-M またはキャリッジ リターン文字と一致します。x の値は、A-Z または a-z の範囲内で指定します。それ以外を指定すると、リテラル文字 "c" と認識されます。
\d 任意の 10 進文字と一致します。[0-9] と同じ意味になります。
\D 10 進数字以外の任意の 1 文字と一致します。[^0-9] と同じ意味になります。
\f フォームフィード文字と一致します。\x0c および \cL と同じ意味になります。
\n 改行文字と一致します。\x0a および \cJ と同じ意味になります。
\r キャリッジ リターン文字と一致します。\x0d および \cM と同じ意味になります。
\s スペース、タブ、フォームフィードなどの任意の空白文字と一致します。[ \f\n\r\t\v] と同じ意味になります。
\S 空白文字以外の任意の文字と一致します。[^ \f\n\r\t\v] と同じ意味になります。
\t タブ文字と一致します。\x09 および \cI と同じ意味になります。
\v 垂直タブ文字と一致します。\x0b および \cK と同じ意味になります。
\w 単語に使用される任意の文字と一致します。アンダースコアも含まれます。'[A-Za-z0-9_]' と同じ意味になります。
\W 単語に使用される文字以外の任意の文字と一致します。'[^A-Za-z0-9_]' と同じ意味になります。
\xn n に指定した 16 進数のエスケープ値と一致します。16 進数のエスケープ値は 2 桁である必要があります。たとえば、'\x41' は "A" と一致します。'\x041' は '\x04' および "1" と同じ意味になります。この表記により、正規表現で ASCII コードを使用できるようになります。
\num num と一致します。num には正の整数を指定します。既に見つかって記憶されている部分と一致します。たとえば、'(.)\1' は、連続する 2 つの同じ文字と一致します。
\n 8 進エスケープ値または後方参照を指定します。\n の前に少なくとも n 個の記憶されたサブ式がある場合は、n は後方参照になります。それ以外の場合で n が 8 進数値 (0-7) である場合は、n は 8 進エスケープです。
\nm 8 進数のエスケープ値または後方参照を指定します。\nm の前に少なくとも nm 個の記憶されたサブ式がある場合は、nm は後方参照になります。\nm の前に少なくとも n 個の記憶されたサブ式がある場合は、n が後方参照になります。どちらの条件にも当てはまらない場合で n および m が 8 進数 (0-7) である場合は、\nm は 8 進数のエスケープ値 nm と一致します。
\nml n が 8 進数値 (0-3) で、ml が 8 進数値 (0-7) の場合、8 進エスケープ値 nml と一致します。
\un n と一致します。n には Unicode 文字で表した 4 桁の 16 進数を指定します。たとえば、\u00A9 は著作権の記号 (©)と一致します。