正規表現とエスケープ
◆正規表現 メタキャラクタ メタキャラクタにより任意の1文字や任意の半角数字などを指定することができます。 メタキャラクタ 意味 . 任意の1文字 \w 英単語を構成する文字(a~z,A~Z,_,1~9) \W 英単語を構成する文字以外 \s 空白文字(半角スペース,タブ,改行,キャリッジリターン) \S 空白文字以外 \d 半角数字(0~9) \D 半角数字以外 \b 単語の境界に一致 [xyz] 指定された文字のどれかに一致(この場合xyzのいずれかに一致) [a-z] マッチする文字の範囲を指定する表現(この場合aからzまで他には[1-9][A-Z]など文字コードが連続していれば使える。) (pattern1|pattern2) 指定されたパターンのどれかにマッチする表現 2.量指定子 量指定子は、文字の後ろに配置し、前の文字が何回出てくるのかを指定します。例えば、0回以上の繰り返しにマッチする量指定子*を ne*ko のように使うと、nko, neko, neeko,neeekoなどに一致します。カッコで囲むことにより繰り返す文字列も指定することができます。 (neko)*sakana であると、sakana, nekosakana, nekonekosakanaという文字列に一致します。 量指定子 意味 * 0回以上の繰り返しにマッチ + 1回以上の繰り返しにマッチ {n} n回の繰り返しにマッチする表現 {n,} n回以上の繰り返しにマッチする表現 {n,m} n回以上m回以下の繰り返しにマッチする表現 ? 0回または1回の出現にマッチする表現 3.アンカー 文字列の先頭や末尾に特定の文字がある文字列も表現できます。 アンカー 意味 ^pattern 文字列の先頭にpatternがある文字列に一致 pattern$ 文字列の末尾にpatternがある文字列に一致 正規表現でエスケープが必要な文字一覧表 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー エスケープ前 エスケープ後 注意点 \ \\ エスケープを行う文字そのものなので、\ だけの記述はできません。\ にマッチングさせたい場合は \\ と記述。 * \* + \+ . \. ? \? { } \{\} 出現回数指定文字なのでエスケープが必要 ( ) \(\) エスケープしないと後方参照が作成される。またはグループ化される。 [ ] \[\] 直前文字の出現回数指定文字なのでエスケープが必要 ^ \^ 行頭を指定することになる。 $ \$ 行末を指定することになる。Perlの場合は、変数の先頭文字である。 - \- [ ]の中に書く場合のみエスケープが必要 | \| / \/ Perlでは / が正規表現の指定になるのでエスケープが必要。言語によっては、" がエスケープ必要となる。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー