[Regex] Repeating Groups

joschilein

Multitalent
ID: 9301
L
5 Mai 2006
1.393
151
Ich muss irgendeine Kleinigkeit übersehen... :(

Mein Pattern sieht momentan so aus:
Code:
;^(?:([0-9]{1,2})\.)*([0-9]{1,2})$;

Damit sollen z.B. folgende Strings gefangen werden
Code:
1
1.2
1.2.3
1.2.3.4
1.2.3.4.5
...

Man könnte es mit Auslesen der Gruppen aus IPs vergleichen, wobei dort natürlich 4 Gruppen à 1-3 Ziffern bekannt sind. Bei meinem Problem ist die Länge eben nicht genau bekannt.

Leider bekomme ich immer nur die letzten 2 Gruppen. Habe ich irgendeinen Modifier übersehen? Habe mir zwar auf regular-expressions.info schon so ziemlich alles durchgelesen, aber ich komme leider nicht weiter.
 
afaik geht das so nicht, da immer nur der letzte match der gruppe zurückgegeben wird.

je nach dem, was du vor hast, würde ich entweder den kompletten string matchen und dann nach dem punkt exploden, oder mit preg_split arbeiten.
 
Hmm irgendwie dachte ich mal gelesen zu haben, dass das in Regex problemlos geht bzw. dass man aufpassen sollte dass das nicht unbeabsichtigt passiert.

Meine Intention war anstatt großer wiederholender if oder case-Blöcke für verschiedene Eingabeformate einfach nur ein kleines Array incl. Regex zu erstellen, was sich übersichtlich erweitern lässt, um dann nur eine einzige Verarbeitungsschleife zu benötigen. Aber eigentlich könnte ich darin wirklich auch nur das jeweilige Trennzeichen, eine Bedeutungsreihenfolge für die Interpretierung hinterlegen (hatte ich jetzt bei den anderen Formaten bei fester Länge mit named groups gemacht) und mit explode arbeiten.