量指定子(りょうしていし)は、正規表現において直前の文字やパターンが「何回繰り返すか」を指定するメタ文字です。例えば、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>まで(最も短い範囲)にマッチします。

コメント