次の文字を正規表現パターン中に記す場合、特殊な意味を持つため、その文字自体を指示するには直前にバックスラッシュ("\
")を記してエスケープする必要がある。
正規表現の種類 | 文字 | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
^ | $ | . | [ | ] | | | ( | ) | ? | * | + | { | } | - | ||
PCRE、POSIX拡張[1] | 角かっこ[]の外 | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | - |
角かっこ[]の中[2] | ○ | - | - | - | ○ | - | - | - | - | - | - | - | - | ○ | |
POSIX基本 | 角かっこ[]の外 | ○ | ○ | ○ | ○ | ○ | - | - | - | - | ○ | - | - | - | - |
角かっこ[]の中 | ○ | - | - | - | ○ | - | - | - | - | - | - | - | - | ○ |
○→文字そのものを指定するにはエスケープが必要
それぞれの意味は以下の通り。
パターン | 意味 | 例 |
---|---|---|
^ |
行頭 | |
$ |
行末 | |
. |
改行を除く任意の1文字 | |
[ |
文字クラス定義の開始 | |
] |
文字クラス定義の終了 | |
| |
選択枝の開始 | |
( |
サブパターンの開始 | |
) |
サブパターンの終了 | |
? |
直前のパターンに0回または1回マッチ、最少回数マッチ |
[abc]? →abcいずれか1文字0回または1回にマッチ「 This is a pen. That is a pen. 」This.+pen\. →This〜pen.に最長マッチ→「This is a pen. That is a pen. 」にマッチThis.+?pen\. →This〜pen.に最短マッチ→「This is a pen. 」にマッチ。
|
* |
直前のパターンを0回以上の繰り返し | |
+ |
直前のパターンを1回以上の繰り返し | |
{ |
量指定子の開始 | |
} |
量指定子の終わり |
パターン | 意味 | 例 |
---|---|---|
^ |
クラスの否定(文字クラスの最初に記した場合のみ) |
[^0123456789] (数字以外)
|
- |
文字範囲の指定(文字クラスの最初以外に記した場合) |
[0-9] (数字)[0-9\-] (数字とハイフン)[-0-9] (数字とハイフン)
|
] |
文字クラスの終わり |
[[{(\]})] (大中小括弧)
|
一般的にバックスラッシュを前に付けると、特殊な意味をなくす効果を持つ(例:\* → アスタリスクそのもの)。逆に以下の場合は制御系文字などを意味する。
パターン | 意味 | 例 |
---|---|---|
\a |
アラーム、ベル(16進 07) | |
\cx |
Ctrl + x | |
\e |
エスケープ文字(16進 1B) | |
\f |
改ページ(formfeed、16進 0C) | |
\n |
改行(newline、16進 0A) | |
\r |
復帰(carriage、16進 0D) | |
\t |
タブ(tab、16進 09) | |
\xhh |
キャラクターコードhh(16進数)の文字 | |
\ddd |
キャラクターコードddd(8進数)の文字、または後方参照 |
バックスラッシュの直後が数字の場合、8進数コードか後方参照、どちらとして解釈されるかは複雑。
パターン | 意味 | 解釈 |
---|---|---|
\040 |
空白文字(8進 40、16進 20) | 8進数コード |
\40 (サブパターン40個未満) |
空白文字(8進 40、16進 20) | 8進数コード |
\40 (サブパターン40個以上) |
40番目のサブパターン | 後方参照 |
\7 |
7番目のサブパターン | 後方参照 |
\11 (サブパターン11個未満) |
タブ文字(8進 11、16進 09) | 8進数コード |
\11 (サブパターン11個以上) |
11番目のサブパターン | 後方参照 |
\011 |
タブ文字(8進 11、16進 09) | 8進数コード |
\113 |
K(8進 113、16進 4B)※100以上の後方参照はない | 8進数コード |
パターン | 意味 |
---|---|
\d |
10進数の数字([0-9] ) |
\D |
10進数の数字以外([^0-9] ) |
\s |
空白文字 |
\S |
空白文字以外 |
\w |
単語構成文字([0-9A-Za-z_] ) |
\W |
単語構成文字以外([^0-9A-Za-z_] ) |
先に登場したパターンを後に参照するには、\数値
を使う。$数値
でもOK? なお直後に数字が続く場合は ${数値}
のように番号を中括弧で囲む。
【例】PDBx:entity要素を検出するパターン(<PDBx:entity id="?">....</PDBx:entity>) <(entity) .*>.*<\/\1> ←\1 の参照する内容は1番目に登場するサブパターン(entity)
パターンを (...) ではなく (?:...) で囲んでおくとキャプチャされない?9
Emacs | PCRE[8](Perl互換) | POSIX基本正規表現 grep/sed/vi |
POSIX拡張正規表現 egrep |
Word | 備考 |
---|---|---|---|---|---|
.(ドット) | .(ドット) | .(ドット) | ? |
改行文字を除く任意の1文字。但し、perlで単一行指定をした場合は改行文字も含む。Wordは改行を含むのかどうかは未確認。
例1:文字列 " |
|
[文字列] | [文字列] | [文字列] | 文字列のいずれか1文字を含むことを意味する。詳細は「文字クラス定義」参照。 | ||
[^文字列] | [^文字列] | [!文字列] | 文字クラス内で後続のパターンを否定する。 | ||
^ | ^ | < | (文字クラス外で)行頭に一致 | ||
$ | $ | > | (文字クラス外で)行末に一致 | ||
\< | (文字クラス外で)単語の先頭 | ||||
\> | (文字クラス外で)単語の末尾となる空文字 | ||||
\w | \w、[[:alnum::]] | アルファベット、数字、下線のいずれか1文字。"[a-zA-Z0-9_]" と同じ。 | |||
\W | \W、[^[:alnum:]] | アルファベット、数字、下線以外のいずれか1文字。下線以外の記号、英数字ではない文字(全角文字など)。"[^a-zA-Z0-9_]" と同じ。 | |||
\s | 空白文字(スペース、復帰文字、タブ、改行文字、ラインフィード)。"[ ¥r¥t¥n¥f]" と同じ。 | ||||
\S | 空白文字以外。"[^ ¥r¥t¥n¥f]" と同じ。 | ||||
\d | 数字。"[0-9]" と同じ。 | ||||
\d | 数字以外。"[^0-9]" と同じ。 | ||||
* | * | * | 量指定子。直前のパターン0回以上に一致。"/img[0-9]*/" は "img","img8","img123"などに一致。 | ||
+ | (なし) | + | @ | 量指定子。直前のパターン1回以上に一致。"/img[0-9]+/" は "img8","img123"などに一致。"img"には一致しない。 | |
? | (なし) | ? | ? | 量指定子。直前のパターン0回か1回に一致。"/img[0-9]?/" は "img","img8"などに一致。"img123"には一致しない。Wordの場合は「1回のみ」(0回はヒットしない)?(未確認) | |
\{m\} | {m} | \{m\} | {m} | {m} | 量指定子。丁度m回に一致。 |
\{m,\} | {m,} | \{m,\} | {m,} | {m,} | 量指定子。m回以上に一致。 |
\{m,n\} | {m,n} | \{m,n\} | {m,n} | {m,n} | 量指定子。m回以上n回以下に一致。 |
\(...\) | (...) | \(...\) | (...) | (...) | グループ化。囲まれた部分にマッチするパターンを後で参照できる(後方参照)。 |
\1,\2,...,\9 | $1,$2,... | \1,\2,... | \1,\2,... |
後方参照。前項のグループ化で指定したパターン。数値は前からの登場順。後方参照の直後に数字が来る場合の対処法
【Perlの例】「Version 3.7.2, 」→「Version 3.8, 」 s/Version 3\.7\.2, \ /${1}8${2}/ |
|
| | | | (なし) | | | 前後の正規表現のどちらか一方にマッチすればマッチしたと判定される。 | |
Emacs | PCRE[8](Perl互換) | grep/sed/vi 基本正規表現 |
egrep 拡張正規表現 |
Word | 備考 |
Emacs | perl | caseの条件節 | 備考 |
---|---|---|---|
^ | ^ | ^ |
否定。文字クラスの先頭にこの文字を記述すると、以降の[ ... ] 内文字をいずれも含まないことを意味する。
|
! | |||
- | - | - |
範囲。文字コードがハイフン前後の文字を含め、その間にある文字全てが対象になる。
|