# 6.2.1 Klammern

Wichtig

- Sofern nicht anders angegeben beziehen sich die Beispiele auf `preg_match()`.
- Die Texte werden nicht in Anführungszeigen gesetzt, um Verwirrungen zu vermeiden.
- Die Fundstelle ist im Ergebnis unterstrichen.

## Runde Klammern bilden eine Gruppe

Die runden Klammern ( ) werden zur Gruppierung genutzt. Sie gruppieren die Elemente zu einem einzigen Element. Es muss eine Übereinstimmung in der Reihenfolge mit allen Elementen vorliegen.
Text: Hier teste ich die Texte
Suchmuster: `/(die)/`
Ergebnis: Hier teste ich die Texte

Auch ohne Klammer muss das gesamte Suchmuster erfüllt sein. Somit ist die runde Klammer in diesem einfachen Beispiel überflüssig. Bei komplexeren regulären Ausdrücken wird eine runde Klammer oft zur Gruppierung eingesetzt.
Text: Hier teste ich die Texte
Suchmuster: `/die/`
Ergebnis: Hier teste ich die Texte

Alternativen können mit dem Pipe-Zeichen | gebildet werden.
Text: Das Hotel ist 70km vom Strand und 30km vom See entfernt
Suchmuster: `/(30|50|70|90)km/`
Ergebnis: Das Hotel ist 70km vom Strand und 30km vom See entfernt

Hinweis

Die Reihenfolge der Alternativen im Suchmuster spielt keine Rolle. Der erste Treffer im Text wird gefunden.

## Eckige Klammern sind Mengenklammer

Die eckige Klammer [ ] dient als Mengenklammer. Es muss nur ein beliebiges Element aus der Menge gefunden werden.

Text: Hier teste ich die Texte
Suchmuster: `/[die]/`
Ergebnis für preg_match(): Hier teste ich die Texte
Ergebnis für preg_match_all(): Hier teste ich die Texte

In der eckigen Klammer lassen sich vereinfachte Mengenangaben schreiben. Der Bindestrich ist damit ein Sonderzeichen dieser Klammer.

- [0-9] alle Ziffern
- [A-Z] alle großen Buchstaben
- [a-z] alle Kleinbuchstaben
- [A-Za-z] alle Buchstaben (keine Umlaute)

Für alle oben genannten Mengen sind auch Teilbereiche möglich z.B. [3-8].

Text: Hier teste ich 1000 Texte
Suchmuster: `/[0-9]/`
Ergebnis: Hier teste ich 1000 Texte

Die eckige Klammer kann negiert werden [^ ].
Das Negationszeichen ^ steht dann am Anfang in der Klammer.
Text: Hier teste ich die Texte
Suchmuster: `/[^die]/`
Ergebnis: Hier teste ich die Texte

Sonderzeichen in der Mengenklammer sind
Die Zeichen `[^ - / \]` gelten in der Mengenklammer als Sonderzeichen.

Keine Sonderzeichen in der Mengenklammer sind
Die Zeichen `[, . * + ? | ( ) # ~ ]` gelten in der Mengenklammer als einfache Zeichen ohne Sonderfunktion.

## Geschweifte Klammern dienen der Wiederholung

Die geschweifte Klammer { } gibt ein Wiederholungsintervall an. Also wie oft das vorstehende Zeichen vorkommen soll. {2,3} bedeutet, dass das vor der geschweiften Klammer stehende Zeichen 2 bis 3-mal vorkommen darf.

Notation:

- {5} genau 5-mal
- {5,} mindestens 5-mal
- {,5} maximal 5-mal
- {2,5} mindestens 2 und maximal 5-mal

Text: Hier teste ich 1000 Texte
Suchmuster: `/[0-9]{2}/` Ergebnis: Hier teste ich 1000 Texte

Text: Hier teste ich 1000 Texte
Suchmuster: `/[0-9]{1,3}/` Ergebnis: Hier teste ich 1000 Texte
Achtung: bei einem variablen Bereich nimmt das Wiederholungsintervall immer den maximal möglichen Wert an.

Text: Hier teste ich 1000 Texte
Suchmuster: `/[0-9]{1,3}?/` Ergebnis: Hier teste ich 1000 Texte
Ein Fragezeichen dahinter bewirkt, dass das Wiederholungsintervall den minimal möglichen Wert annimmt.