本文へスキップ
BecomeCoder

正規表現コース · 第3章 繰り返しを表す · レッスン7

* + ? ― 繰り返しの基本3記号

ブラウザで完結

導入

直前の要素が「何回繰り返されるか」を指定するのが量指定子です。まずは基本の3つ、*(0回以上)・+(1回以上)・?(0か1回)を覚えましょう。

説明

量指定子は 直前の1要素 にかかります。

記号意味
*直前を0回以上(なくてもよい/何個でも)
+直前を1回以上(最低1個は必要)
?直前を0回か1回(あってもなくてもよい)
パターン: ab*c   対象: ac abc abbbc   → 全部マッチ(b が0個以上)
パターン: ab+c   対象: ac abc abbbc   → abc, abbbc がマッチ(ac は b が0個なので不可)
パターン: ab?c   対象: ac abc abbbc   → ac, abc がマッチ(abbbc は b が多すぎる)

定義済みクラスと組み合わせると実用的になります。

パターン: \d+          対象: 商品コード A1234B  → "1234" にマッチ(数字が1個以上続くところ)
パターン: -?\d+        対象: 気温は-5度        → "-5" にマッチ(先頭の - はあってもなくてもよい)
パターン: colou?r      対象: color / colour    → 両方にマッチ(イギリス綴りにも対応)

\d+ は「数字が1文字以上連続するかたまり」を表す、もっとも使う組み合わせのひとつです。

やってみよう

*(0以上)・+(1以上)・?(0か1)の違いを、ab*c ab+c ab?c で見比べましょう。「量指定子は直前の1要素にかかる」が肝心です。

実際に動かしてみよう

パターン欄に正規表現を、下の「テスト文字列」欄に対象の文字列を入れると、マッチした部分がその場でハイライトされます(ブラウザ標準の正規表現エンジンで動きます)。フラグ(g/i/m/s)を切り替えたり、本文のパターンを書き換えたりして、マッチの変化を確かめながら進めましょう。

正規表現 — その場でマッチを確認

ブラウザ標準の正規表現エンジンでパターンを試せる学習用ウィジェットを読み込みます(外部エンジン不要・軽量です)。
スクロールして表示された時点でも自動で読み込まれます。