正規表現基礎まとめ
Index
正規表現とは
正規表現は、文字列の集合を一つの文字列で表現する方法の一つである。正則表現とも呼ばれ、形式言語理論の分野では比較的こちらの訳語の方が使われる。まれに正規式と呼ばれることもある。 もともと正規表現は形式言語理論において正規言語を表すための手段として導入された。
– wikipedia
かんたんに言うと、「とある文字もしくは文字の塊を一つの形式で表現するための表現方法」です。
例えば、「banana」「orange」「cherry」という単語を検索や何かしらの処理を行いたいときに、それぞれ単語を個別に入力するのではなく、「半角小文字のアルファベット6文字から成る単語」と指定できれば、3つが一括で表現可能となります。
正規表現で表すと
[a-z]・・・a〜zのいずれかの文字
{6}・・・6回繰り返す
というルールを組み合わせて
[a-z]{6}
となります。
この表現手法を正規表現といいます。
基本的なメタキャラクタ
Windowsの場合は\(バックスラッシュ)は¥(円マーク)に置き換える。
文字にマッチするメタキャラクタ
キャラクタ | 説明 | 同表現 |
---|---|---|
. | 任意のすべての1文字にマッチ | なし |
\w | アルファベット、数字、アンダースコア(_)にマッチ | [a-zA-Z_0-9] |
\W | アルファベット、数字、アンダースコア(_)以外にマッチ | [^a-zA-Z_0-9] |
\s | 半角スペース、タブスペース、改行、復帰、改ページの空白にマッチ ※全角スペースはマッチしない |
[ \t\f\r\n] |
\S | 空白文字以外にマッチ | [^ \t\f\r\n] |
\d | 半角数字にマッチ | [0-9] |
\D | 半角数字以外の全ての文字にマッチ | [^0-9] |
\b | 単語の境界線が存在する文字にマッチ | なし |
\B | 単語の境界線が存在しない文字にマッチ | なし |
キャラクタの覚え方
- \w・・・word(単語)の頭文字の「w」
- \s・・・space(スペース)の頭文字の「s」
- \d・・・digit(数字)の頭文字の「d」
- \b・・・border(ボーダー)の頭文字の「b」
- 大文字は小文字キャラクタ以外の全て(逆を意味する)。
文字の繰り返し回数を指定してマッチするメタキャラクタ(量指定子)
キャラクタ | 説明 |
---|---|
* | 0回以上の繰り返しにマッチ |
+ | 1回以上の繰り返しにマッチ |
{n} | n回の繰り返しにマッチ |
{n,} | n回以上の繰り返しにマッチ |
{n,m} | n回以上、m回以下の繰り返しにマッチ |
? | 0回または1回の出現にマッチ |
文字の位置を指定してマッチするメタキャラクタ(アンカー)
キャラクタ | 説明 |
---|---|
^ | 文字列の先頭にマッチ |
$ | 文字列の末尾にマッチ |
条件を指定した文字にマッチするメタキャラクタ
キャラクタ | 説明 |
---|---|
[●▲■] | 括弧の中の●▲■のどれか1文字にマッチ |
[^●▲■] | 括弧の中の●▲■以外の文字にマッチ |
[●-■] | 括弧の中の●から■までの文字範囲にマッチ ※文字範囲は次の項目で説明 |
●●●|▲▲▲|■■■ | 「●●●」「▲▲▲」「■■■」のどれかの単語にマッチ ※文の中で使用するときは丸括弧で囲む。例 : 今日の天気は(晴れ|くもり|雨)です。 |
範囲指定サンプル
マッチする文字の範囲を指定する表現
キャラクタ | 説明 |
---|---|
[0-9]、[0-9] | 半角数字、全角数字 |
[A-z]、[A-z] | 半角アルファベット、全角アルファベット(大文字・小文字) |
[A-Z]、[A-Z] | 半角アルファベット、全角アルファベット(大文字) |
[a-z]、[a-z] | 半角アルファベット、全角アルファベット(小文字) |
[ぁ–ん] | 全角ひらがな |
[ァ–ヴ] | 全角カタカナ |
[ヲ-゚] | 半角カタカナ |
エスケープが必要な文字
エスケープとはメタキャラクタで使用されている文字または記号をメタキャラクタとしてではなく文字としてマッチさせる為に「この記号はメタキャキャラクタではなく通常の文字だよ」と指定する方法です。
例: 「100 * 100 = 10000」という数式にマッチさせたい場合、「*」は0回以上繰り返すメタキャラクタではなく、数式における掛けるを意味する文字として扱いたいときに、「\*」としてエスケープする。
基本的にはマッチさせたい文字の前に「\(バックスラッシュ)」を追加することでエスケープします。
キャラクタ | エスケープ後 | キャラクタ | エスケープ後 |
---|---|---|---|
\ | \\ | . | \. |
* | \* | ^ | \^ |
$ | \$ | + | \+ |
| | \| | ? | \? |
( | \( | ) | \) |
[ | \[ | ] | \] |
{ | \{ | } | \} |
おすすめ書籍
さっと一通り理解するならこちらがオススメ。自分もこの本を読んで簡単な表現は書くことが出来るようになりました。
正規表現をより深堀りするならこちらがオススメ。