Erfassungsgruppen, benannte Gruppen und Lookaround im Überblick.
Klammern (...) erzeugen eine Erfassungsgruppe. Der passende Teil kann als Fragment separat herausgeholt oder im Ersetzungsausdruck als $1·$2 wiederverwendet werden. Möchte man eine Gruppe bilden, aber nicht erfassen, verwendet man mit (?:...) eine nicht erfassende Gruppe.
(?<name>...) ist eine benannte Erfassungsgruppe. Da man statt über eine Nummer über den Namen darauf zugreifen kann, verbessert sich die Lesbarkeit, je länger das Muster wird. In der Ersetzung verweist man mit $<name> darauf.
Lookahead (?=...) passt auf eine Position, an der ein bestimmtes Muster folgt, (?!...) auf eine, an der es nicht folgt, ohne diesen Teil zu verbrauchen. Lookbehind (?<=...) und (?<!...) prüfen auf dieselbe Weise den vorangehenden Teil.
Der Kern von Lookaround ist, dass es eine "nicht verbrauchende Bedingung" ist. Es ist mächtig, wenn man wie bei der Prüfung starker Passwörter mehrere Bedingungen überlagern will oder nur in einem bestimmten Kontext ersetzen möchte.