正規表現の * とか + とか、もう忘れすぎ問題
正規表現の * とか + とか、気づけば何百回とGoogle検索してる気がするので、いい加減ここに自分用メモとしてまとめておきます。
| 記号 | 意味 | マッチ回数 | デフォルト動作 |
|---|---|---|---|
* |
0回以上 | 0,1,2,… | 最長マッチ(Greedy) |
+ |
1回以上 | 1,2,… | 最長マッチ(Greedy) |
*? |
0回以上 | 0,1,2,… | 最短マッチ(Lazy) |
+? |
1回以上 | 1,2,… | 最短マッチ(Lazy) |
こういう「直前の文字やグループが何回繰り返されるか」を指定する記号のことを 量指定子(Quantifier) と呼びます。 * や + のほかに、{n,m} みたいなのも量指定子の仲間です。
覚え方の小ネタ(AIに考えさせてみた)
-
*→ 「ゼロから無限まで」 → スターは無限の可能性 -
+→ 「最低1回」 → プラスはポジティブ、必ず1回以上 -
?がつくと → 「ちょっと遠慮がち」になる
…まあ、これで少しは頭に残りやすくなるかも?