5.4.1. Iteratoren

Jeder Teil eines regulären Ausdruckes kann gefolgt werden von einer anderen Art von Metazeichen - den Iteratoren. Dank dieser Metazeichen kannst Du die Häufigkeit des Auftretens des Suchmusters im Zielstring definieren. Dies gilt jeweils für das vor diesem Metazeichen stehenden Zeichen, das Metazeichen oder den Teilausdruck.
Iterator
Beschreibung
* kein- oder mehrmaliges Vorkommen ("gierig"), gleichbedeutend wie {0,}
+ ein- oder mehrmaliges Vorkommen ("gierig"), gleichbedeutend wie {1,}
? kein- oder einmaliges Vorkommen ("gierig"), gleichbedeutend wie {0,1}
{n} genau n-maliges Vorkommen ("gierig")
{n,} mindestens n-maliges Vorkommen ("gierig")
{n,m} mindestens n-, aber höchstens m-maliges Vorkommen ("gierig")
*? kein- oder mehrmaliges Vorkommen ("genügsam"), gleichbedeutend wie {0,}?
+? ein oder mehrmaliges Vorkommen ("genügsam"), gleichbedeutend wie {1,}?
?? kein- oder einmaliges Vorkommen ("genügsam"), gleichbedeutend wie {0,1}?
{n}? genau n-maliges Vorkommen ("genügsam")
{n,}? Mindestens n-maliges Vorkommen ("genügsam")
{n,m}? mindestens n-, aber höchstens m-maliges Vorkommen ("genügsam")
Die Ziffern in den geschweiften Klammern in der Form {n,m} geben an, wieviele Male das Suchmuster im Zielstring gefunden muss, um einen Treffer zu ergeben. Die Angabe {n} ist gleichbedeutend wie {n,n} und findet genau n Vorkommen. Die Form {n,} findet n oder mehre Vorkommen. Es gibt keine Limiten für die Zahlen n und m. Aber je grösser sie sind, desto mehr Speicher und Zeit wird benötigt, um den regulären Ausdruck auszuwerten.
Falls eine geschweifte Klammer in einem anderen als dem eben vorgestellten Kontext vorkommt, wird es wie ein normales Zeichen behandelt.
Ausdruck
Beschreibung
foob.*r findet Strings wie 'foobar', 'foobalkjdflkj9r' und 'foobr'
foob.+r findet Strings wie 'foobar', 'foobalkjdflkj9r', aber nicht 'foobr'
foob.?r findet Strings wie 'foobar', 'foobbr' und 'foobr', aber nicht 'foobalkj9r'
fooba{2}r findet den String 'foobaar'
fooba{2,}r findet Strings wie 'foobaar', 'foobaaar', 'foobaaaar', etc.
fooba{2,3}r findet Strings wie 'foobaar', 'foobaaar', aber nicht 'foobaaaar'
Eine kleine Erklärung zum Thema "gierig" oder "genügsam". "Gierig" nimmt soviel wie möglich, wohingegen "genügsam" bereits mit dem ersten Erfüllen des Suchmusters zufrieden ist. Beispiel: 'b+' und 'b*' angewandut auf den Zielstring 'abbbbc' findet 'bbbb', 'b+?' findet 'b', 'b*?' findet den leeren String, 'b{2,3}?' findet 'bb', 'b{2,3}' findet 'bbb'.
Mit dem Modifier /g können Sie alle Iteratoren auf den genugsamen Modus umschalten.