正規表現 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
このように、既に一致した文字列をパターン内で使用することができます。