正規表現

正規表現での「.(ドット)」は任意の一文字(改行以外) | エスケープ方法

正規表現でのドットは任意の一文字
記事の要約
  • 「.(ドット)」は任意の一文字(例外:改行)
  • 「.」のエスケープは「\(バックスラッシュ)」を使って「\.」
  • 「*」「+」「?」「{}」を使って文字数を柔軟に設定できる

正規表現での「.(ドット)」は任意の一文字

正規表現での「.(ドット)」は任意の一文字を表します。

// 任意の一文字を表す
.

あ // OK
A // OK
案 // OK
1 // OK
; // OK

「.」を複数回繰り返すとその数分だけの文字を表現します

// 任意の5文字を表す
.....

フシギバナ // OK
カメックス // OK
リザードン // OK

ほかの文字と組み合わせて使ってもOKです。

// 「〇〇チュウ」を表す
..チュウ

ピカチュウ // OK
ライチュウ // OK

【例外】「.」は改行(\n, \r, \r\n)を含まない

ただし例外があり「.」は改行を表す「\n」「\r」「\r\n」は含みません。説明が前後しますが任意の一文字以上を表す「.+」を使っても、各行にしかヒットしません。

// 任意の一文字以上を表す
.*

// 処理したい文字列
ラッキーに
あったらいちにち
ちょうラッキー

// マッチする文字列
「ラッキーに」
「あったらいちにち」
「ちょうラッキー」

「.」のエスケープは「\.」とする

「.」は正規表現内にて特別な意味をもつメタ文字なため、たんに文字としての「.」を表現したい場合は「\.」のように「\(バックスラッシュ)」を前に記載する必要があります。

// 処理したい対象
ポケットモンスター 赤・緑の発売日は1996.02.27
ポケットモンスター 赤・緑の発売日は1999/11/21

// 抜き出したい言葉
1996.02.27

\d{4}.\d{2}.\d{2}   // NG「1996.02.27」と「1999/11/21」
\d{4}\.\d{2}\.\d{2} // OK「1996.02.27」のみ

「.」の繰り返し記述

「.」を何回か繰り返したい場合には次のような表現が便利です。

「.*」は任意の0文字以上

「.*」は任意の0文字以上を表します。「*」が前の文字を0回以上繰り返す意味のため、任意の文字を表す「.」と合わせることで任意の0文字以上を表現できます。

// 任意の0文字以上をあらわす
.*

// 処理したい文字列
ピカチュウ カイリュー ヤドラン ピジョン

コダック コラッタ ズバット ギャロップ

// ヒットする文字列
「ピカチュウ カイリュー ヤドラン ピジョン」
「」 //文字なしにもヒット
「コダック コラッタ ズバット ギャロップ」

「.+」は任意の1文字以上

「.+」は任意の1文字以上を表します。「+」が前の文字を1回以上繰り返す意味のため、任意の文字を表す「.」と合わせることで任意の1文字以上を表現できます。

// 任意の1文字以上をあらわす
.+

// 処理したい文字列
ピカチュウ カイリュー ヤドラン ピジョン

コダック コラッタ ズバット ギャロップ

// ヒットする文字列
「ピカチュウ カイリュー ヤドラン ピジョン」
「コダック コラッタ ズバット ギャロップ」

「.?」は任意の0,1文字

「.?」は任意の0文字または1文字を表します。「?」が前の文字を0回または1回の意味のため、任意の文字を表す「.」と合わせることで0文または任意の1文字を表現できます。

// 任意の0,1文字と「ラッタ」をつなげる
.?ラッタ

// 処理したい文字列
コラッタ
ラッタ

// ヒットする文字列
コラッタ
ラッタ

「.{N,M}」は任意のN〜M文字

「.{N,M}」は任意のN〜M文字を表します。「{N,M}」が前の文字をN〜M回繰り返す意味のため、任意の文字を表す「.」と合わせることで特定の回数の繰り返しを表現できます。

// 任意の0文字以上をあらわす
^.{3,4}博士$

// 処理したい文字列
オーキド博士
ウツギ博士
オダマキ博士
ナナカマド博士

// ヒットする文字列
オーキド博士
ウツギ博士
オダマキ博士