導入
直前の要素が「何回繰り返されるか」を指定するのが量指定子です。まずは基本の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要素にかかる」が肝心です。