← ガイド一覧 GUIDE
*, +, {n,m} そして ? を付けたときの違いを理解します。

量指定子は直前の要素が何回繰り返されるかを指定します。*は0回以上、+は1回以上、?は0回または1回です。正確な回数は {n}、範囲は {n,m} で書きます。例えば \d{3} は数字がちょうど3個です。

デフォルトでは量指定子は貪欲(greedy)です。つまり、できるだけ多く飲み込もうとします。<.*> を <a>b<c> に適用すると、最初の < から最後の > まで丸ごと捕捉されます。

量指定子の後に ? を付けると怠惰(lazy)マッチになります。<.*?> はできるだけ少なく飲み込み、<a> だけを捕捉します。タグや引用符の間の内容を一つずつ抽出するとき、この違いが決定的です。

貪欲/怠惰のせいでパターンが予想と異なる動作をする場合が多くあります。結果が広く捕捉されすぎるときは、怠惰な量指定子や否定文字クラス([^>] など)を思い出してみてください。