記事の要約
- 「.(ドット)」は任意の一文字(例外:改行)
- 「.」のエスケープは「\(バックスラッシュ)」を使って「\.」
- 「*」「+」「?」「{}」を使って文字数を柔軟に設定できる
Contents
正規表現での「.(ドット)」は任意の一文字
正規表現での「.(ドット)」は任意の一文字を表します。
// 任意の一文字を表す
.
あ // 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}博士$
// 処理したい文字列
オーキド博士
ウツギ博士
オダマキ博士
ナナカマド博士
// ヒットする文字列
オーキド博士
ウツギ博士
オダマキ博士