正規表現 regular expression

正規表現で使われるエスケープシーケンス、メタ文字、文字クラス、量指定子などをご紹介します。
使用例は掲載していませんのでご注意ください。

エスケープシーケンス

¥¥ ¥
¥" ダブルクォーテーション
¥' シングルクォーテーション
¥a ベル
¥b バックスペース
¥e エスケープコード
¥n 改行
¥r キャリッジリターン(改行)
¥t 水平タブ
¥v 垂直タブ
¥z エンドオブファイル(EOF)

メタ文字・位置指定子

. 改行を除く任意の1文字
* 0回以上の連続する文字
+ 1回以上の連続する文字
? 0または1回だけの文字
^ 行の先頭
$ 行の末尾
¥ エスケープ文字
| OR(または)
() パターングループ
[] 文字クラス
{} 量指定子
¥n 改行
¥r キャリッジリータン(改行)
¥t タブ
¥d 数字 [0-9]と同じ
¥D 数字以外 [^0-9]と同じ
¥w 英数字 [_a-zA-Z0-9]と同じ
¥W 英数字以外 [^_a-zA-Z0-9]と同じ
¥A 文字列の先頭
¥Z 文字列の末尾
¥s 空白 [ ¥t¥r¥f]と同じ
¥S 空白以外 [^ ¥t¥n¥r¥f]と同じ
¥b 単語境界 ¥w、¥Wの間
¥B 単語境界以外
¥x?? 16進数コード(¥x81など)

文字クラス

- 範囲
^ ~以外(例:^0-9以外)
a-z 小文字の半角英字
^a-z 小文字の半角英字以外
A-Z 大文字の半角英字
^A-Z 大文字の半角英字以外
0-9 数字
^0-9 数字以外
[:alnum:] [:alpha:]+[:digit:]と同じ
[:alpha:] [:lower:]+[:upper:]と同じ
[:lower:] 小文字の半角英字 [a-z]と同じ
[:digit:] 数字 [0-9]と同じ
[:blank:] スペースとタブ [ ¥t]と同じ
[:cntrl:] 制御文字
[:graph:] [:alnum:]+[:punct:]と同じ
[:print:] [:alnum:]+[:punct:]+スペースと同じ
[:punct:] 句読点(! " # $ % & ' ( ) * + , - . /)
[:space:] 空白文字 [ ¥t¥n¥r¥f¥v]と同じ
[:upper:] 大文字の半角英字 [A-Z]と同じ
[:xdigit:] 16進数 [0-9A-Fa-f]と同じ

量指定子

* 0回以上繰り返す文字
+ 1回以上繰り返す文字
? 0もしくは1回以上繰り返す文字
{n}? n回の連続する文字
{n,}? n回以上繰り返す文字
{n, m}? n回以上m回以下の繰り返す文字

オプション

正規表現(検索内容)に対してのオプションを指定できます。
言語によって使用できるオプションが異なる場合があります。

i 大文字・小文字の区別を無視
g 全てに一致(グローバルマッチ)
s 改行を含む ※ 一部言語で対応
u Unicodeを含む ※ 一部言語で対応

JavaScript

グループ化のためのみの丸括弧

通常、グループ化をするために丸括弧(パーレン)を使用しますが、単純に丸括弧を使用すると、括弧内で一致したパターンが変数「$~」に格納されます。
この一致したパターンを変数に格納しないようにするためには、(?:x)を使用します。

JavaScriptの場合

肯定的先読み・後読みと否定的先読み・後読み

検索該当文字列の前後の一致を調べる場合に用いるのが先読みまたは後読みです。
実際の結果には先読みと後読みで一致した内容は含みません。

種類 コード例 説明
肯定的先読み x(?=y) xの後にyがあるx
否定的先読み x(?!y) xの後にyでないx
肯定的後読み (?<=y)x xの前にyがあるx
否定的後読み (?<!y)x xの前にyでないx

なお、JavaScriptは後読みは実装されていませんでした。
JavaScriptはECMAScript 2018(ES2018)から後読みが実装されました。

JavaScript

後方参照

「グループ化のためのみの丸括弧」でも説明しているとおり、パターン内で丸括弧を使用すると、括弧内で一致したパターンが変数「$~」に格納されます。
(~は丸括弧の番号で、0は検索元の文字列です)

JavaScript

通常この変数は置換後の文字列の仕様や一致した文字列の配列に渡されますが、パターン内で使用することもできます。

パターン内で使用する場合は、「¥~」と指定します。
(~は丸括弧の番号で、0は検索元の文字列です)

JavaScript

このように、既に一致した文字列をパターン内で使用することができます。