量指定子(りょうしていし)は、正規表現において直前の文字やパターンが「何回繰り返すか」を指定するメタ文字です。例えば、a
の直後に *
を付けると「0回以上」を意味し、+
を付けると「1回以上」を意味します。波括弧 {n,m}
を使うと、特定の回数(例: \d{3}
は3桁の数字)や回数の範囲(例: \d{3,5}
は3桁から5桁の数字)を指定することも可能です。
主な量指定子の種類と意味
*
(アスタリスク):直前の要素が0回以上繰り返されることを指定します。- 例:
a*
は「”” (空文字)」、「a」、「aa」、「aaa」などにマッチします。
- 例:
+
(プラス記号):直前の要素が1回以上繰り返されることを指定します。- 例:
a+
は「a」、「aa」、「aaa」などにマッチします。
- 例:
?
(疑問符):直前の要素が0回または1回繰り返されることを指定します。- 例:
a?
は「”” (空文字)」または「a」にマッチします。
- 例:
{n}
(波括弧 n):直前の要素がちょうど n 回繰り返されることを指定します。- 例:
\d{5}
はちょうど5桁の数字にマッチします。
- 例:
{n,}
(波括弧 n,):直前の要素がn回以上繰り返されることを指定します。- 例:
\d{3,}
は3桁以上の数字にマッチします。
- 例:
{n,m}
(波括弧 n, m):直前の要素がn回以上、m回以下の範囲で繰り返されることを指定します。- 例:
\d{3,5}
は3桁から5桁の数字にマッチします。
- 例:
「貪欲 (greedy)」と「最短 (lazy)」
量指定子はデフォルトでは「貪欲 (greedy)」で、マッチ可能な最長の文字列と一致しようとします。しかし、量指定子の直後に疑問符 ?
を付けることで「最短 (lazy)」にすることができ、マッチ可能な最短の文字列と一致するようになります。
- 例1 (貪欲):
<div>.*</div>
は<div>
と</div>
の間のすべてのテキスト(最も長い範囲)にマッチします。 - 例2 (最短):
<div>.*?</div>
は、最初に見つかった</div>
まで(最も短い範囲)にマッチします。
コメント