【正規表現】正規表現で使われる記号

【正規表現】
正規表現で使われる記号




正規表現は、
書式が決まっていて、
基本を知らないと、正規表現を理解することも、
操作することもできない。


下記の正規表現で使える記号の意味を知っていると、
色々な文字検索などができて便利になる。
下記の記号の意味を知っていないと、
正規表現は全く使えない。



正規表現で使われる記号

記号説明
. 「.(ドット/ピリオド)」は、「改行」文字以外の任意の文字を指定する記号。
改行文字「\n」を除く、任意の「1文字」に一致する。
改行文字「\n」と一致するには、「[.\n]」と などのパターンを指定する。
* 「*(アスタリスク/アスター)」は、
直前にある文字が、「0回」以上続くことを意味する記号。
「.*」と指定することで、「改行」以外のすべての文字に合致するので、1行すべてを選択できるようになる。
+ 直前の文字の1個以上の繰り返しに一致。
? 直前の文字に、0回または、1回一致する。
\ 「\」は、「\」に続く文字が「特殊文字」「リテラル」「後方参照」「8 進エスケープ」であることを示す。
「\n」=「改行文字」
「\\」=「\」
「\(」=「(」
^ 「^(キャレット/ハット)」は、行の最初を指定する記号。
「^」の後に続く文字が、文字列の先頭にあるという印。
文字のない空の行を表すには「^\n」(行頭が改行である)と記述。
$ 「$」の後に記述した文字が、行の最後にあるという印。
行の最後にマッチするという記号。
| 「|」は、「条件|条件」と記述することで、条件の追加を意味する記号。
「x|y」は、x または y と一致。
/ 「/(スラッシュ)」は、「正規表現」では、特に意味を持っていません。
「正規表現」のコード・パターンの前後において、明確化する「デリミタ」として使わている。
「デリミタ(Delimiter)」とは、「正規表現」のコード・パターンの前後を囲むことで、パターンの範囲を明示する役割をする記号のこと。
[ ] 括弧内に含まれる一文字にマッチする。
[abc] は、「a」「b」「c」にマッチする。
英語のアルファベットでは、[a-z] は全ての小文字にマッチする。
[abcq-z] は a、b、c、q、r、s、t、u、v、w、x、y、z にマッチし、[a-cq-z]でも同様である。
文字 '-' は括弧内の最初か最後にあるときのみ、リテラルに扱われる。
[^ ] 括弧内に含まれない一文字にマッチする。
[^abc] は、「a」「b」「c」以外の任意の文字にマッチする。
[^a-z] は小文字以外の任意の一文字にマッチする。
() これに囲まれた表現は、後に呼び出すことが出来る。次の \n の項を参照のこと。
$n ここで「n」は、「1~9」までの数字。
n番目の 「(」「)」 で囲まれた部分にマッチする。
{x,y} 直前の"ブロック"の 「x」回以上「y」回以下の繰り返しにマッチする。
例えば、"a{3,5}" は aaa、aaaa、aaaaa にマッチする。
{n} 直前にある文字のちょうどn回に一致。 つまりA{2}はAA、A{4}はAAAAに一致。 \d(数字を表す正規表現)と組み合わせると数字の桁数が指定できます。
{n,} 直前にある文字のn回以上に一致。 A{2,}は、「AA」,「AAA」,「AAAA」...(2文字以上ならいくらでも)に一致する。
{n,m} 直前にある文字のn回以上、m回以下に一致。 A{2,4}は、「AA」,「AAA」,「AAAA」に一致する。 \d(数字を表す正規表現)と組み合わせると数字の桁数が指定できる。 カンマと数の間には、スペースを入れない。 'o{0,1}' は 'o?' と同じ意味。
(pattern) 「pattern」と一致した文字列を記憶する。
記憶した一致文字列は、「$数字」で呼び出すことができる。
(?:pattern) 「pattern」に記述した文字列を検索できるが、
検索された文字列は記憶されず、後で使用することはできない。
「industry|industries」と指定する代わりに、「industr(?:y|ies)」と指定することができる。
文字列(?=pattern) 文字列の後に「pattern」で指定した文字列が続く場合に一致する。
一致した文字列は記憶されない。
(?!pattern) 「pattern」で指定しない文字列が続く場合に一致。
一致した文字列は、記憶されない。
\b 「\b」は、単語の境界線と指定する記号。

「"/\b文字列\b/"」= 指定した文字だけの文字列(単語)を指定。
「"/\b文字列/"」= 指定した文字で始まる文字列(単語)を指定。
「"/文字列\b/"」= 指定した文字で終わる文字列(単語)を指定。

単語の境界とは、単語とスペースとの間の位置のこと。
たとえば、「'er\b'」 は、「never」の「er」と一致するが、「verb」の「er」とは一致しない。
\B 「文字列\B」と記述することで、単語境界以外と一致。
たとえば、'er\B' は "verb" の 'er' と一致しますが、"never" の 'er' とは一致しません。
\cx 「x」の場所で指定した制御文字と一致。
「\cM」は、「Control-M」または「キャリッジ リターン文字」と一致。
「x」 の値は、「A-Z」または「a-z」の範囲内で指定。
\d 「0~9」の数字を表す正規表現。
[0-9] と同じ意味。
\D 「10進数」以外の任意の1文字と一致。
[^0-9] と同じ意味。
\f フォームフィード文字と一致。
\x0c および \cL と同じ意味。
i 文字の「大文字」「小文字」を区別せずに検索させることができる。
「"/正規表現/i"」と指定する。
\n 改行文字。LFと呼ばれる改行。
UNIX系マシンの標準的な改行コード。
\x0a および \cJ と同じ意味。
\r 改行文字。
CRと呼ばれる改行。
Apple系マシンの標準的な改行コード。
Windows系マシンはCR+LFが改行コード。
2文字で1つの改行。
\s 空白文字を表す正規表現。
空白文字は、半角スペース、タブ文字を含む。
スペース、タブ、フォームフィードなどの任意の空白文字と一致。
[ \f\n\r\t\v] と同じ意味。
\S 空白文字以外を表す正規表現。
正規表現では小文字が大文字になると反対の意味を持つ。
空白文字以外の任意の文字と一致。[^ \f\n\r\t\v] と同じ意味。
\t タブ文字と一致。\x09 および \cI と同じ意味。
タブ文字を示す正規表現。
タブは適当な間隔を空けてくれる文字。
タブを1文字入れると、通常、半角スペース4文字分か8文字分の間隔があく。
\v 垂直タブ文字と一致。\x0b および \cK と同じ意味。
\w 単語に使用される任意の文字と一致。
アンダースコアも含まれます。
「[A-Za-z0-9_]」と同じ意味。
英数字と「_」(アンダーバー)を表す正規表現。
「ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890_」と同じ意味。
\W 単語に使用される文字以外の任意の文字と一致。
「[^A-Za-z0-9_]」と同じ意味。
\w以外を表す正規表現。