Verstehen Sie den Unterschied zwischen *, +, {n,m} und dem Anhängen von ?.
Quantoren geben an, wie oft sich das vorangehende Element wiederholt. * steht für null oder mehr, + für ein oder mehr und ? für null oder ein Mal. Die genaue Anzahl schreibt man mit {n}, einen Bereich mit {n,m}. Zum Beispiel steht \d{3} für genau drei Ziffern.
Standardmäßig sind Quantoren gierig (greedy). Das heißt, sie versuchen, so viel wie möglich zu verschlingen. Wendet man <.*> auf <a>b<c> an, wird alles vom ersten < bis zum letzten > als Ganzes erfasst.
Hängt man hinter einen Quantor ein ?, wird das Matching genügsam (lazy). <.*?> verschlingt so wenig wie möglich und erfasst nur <a>. Beim einzelnen Herausziehen von Inhalten zwischen Tags oder Anführungszeichen ist dieser Unterschied entscheidend.
Wegen Gier bzw. Genügsamkeit verhalten sich Muster oft anders als erwartet. Wenn das Ergebnis zu breit erfasst wird, denken Sie an genügsame Quantoren oder negierte Zeichenklassen ([^>] usw.).