JavaScript Regex Blöcke auslesen

Alkor35

Ensign
Registriert
Aug. 2004
Beiträge
132
Hallo Zusammen,

ich bin gerade im JS eine kleine Programmierung am machen. Leider bekomme ich nicht den passenden Regex Befehl hin :confused_alt:

Ausgangssituation:
Ich habe eine Variable mit einem String MeinArray = MeineVaribale.splt(/[0-9]{2}\.[0-9]{2}\. .\R.\R/gm) probiert, gibt mir aber nicht das richtige Ergebnis aus

Beispiel wie meine Variable aussieht
01.03. 01.03. Zeile0
Zeile 1
Zeile 2
01.03. 03.03. Zeile0
Zeile 1
02.03. 02.03. Zeile0
Zeile 1
Zeile 2
Zeile 3
Zeile 4

Jetzt brauche ich ein Array mit folgenden Inhalt.

MeinArray[0] = "
01.03. 01.03. Zeile0
Zeile 1
Zeile 2"

MeinArray[1] = "
01.03. 03.03. Zeile0
Zeile 1"

Mein Array[2] = "
02.03. 02.03. Zeile0
Zeile 1
Zeile 2
Zeile 3
Zeile 4"
 
Damit bin ich seit 2 Stunden am Testen, bekomme es aber leider nicht hin
 
Code:
/^([0-9]{2}\.[0-9]{2}\. [0-9]{2}\.[0-9]{2}\. )((?:(?!^[0-9]{2}\.[0-9]{2}\. [0-9]{2}\.[0-9]{2}\. ).\R?)*)/gm
funktioniert bei mir. Du musst quasi die Zeilen suchen, die keinen Datumsstring enthalten nach dem ersten Datumsstring. Und damit es keine Fehlerkennung gibt, muss dafür das Datum auch noch am Anfang der Zeile stehen.

Ich hab dir auch Klammern eingebaut, damit das Datum und der Text separat in Capture groups vorliegen.

EDIT: Und hier noch eine gegolfte Version:
Code:
^((?:(?:\d{2}\.){2} ){2})((?:(?!^(?:(?:\d{2}\.){2} ){2}).\R?)*)

EDIT2: Und hier mit besserer Leerzeilenerkennung und optimiert auf weniger Schritte:
Code:
^((?:(?:\d{2}\.){2} ){2})((?:(?!^(?:(?:\d{2}\.){2} ){2}).*\R?)+)
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Alkor35
Vielen Dank, das war die Lösung

Musste doch noch eine Kleinigkeit ändern ;)
Da es ansonsten im JS nicht ganz klappte

Javascript:
/^((?:(?:\d{2}\.){2} ){2})((?:(?!^(?:(?:\d{2}\.){2} ){2}).*[\n|\r]?)+)/gm
 
Zuletzt bearbeitet:
Mach das lieber direkt mit JS, das ist weniger Fehleranfällig, leichter zu erkennen was passiert und leichter was zu ändern. Und wäre vermutlich auch in weit weniger als 2 Stunden fertig gewesen.
 
  • Gefällt mir
Reaktionen: abcddcba
Alkor35 schrieb:
Damit bin ich seit 2 Stunden am Testen,
wolltest du das jetzt bewusst mit REGEX machen, also auch zur Uebung? Sonst haette man in den 2h sicherlich auch die paar Zeilen Code schreiben koennen um zeilenweise den Text zu parsen, oder war das keine Option? Also war das einfach mal so um auch was zu lernen? Waere ja auch ein valider Grund im Prinzip und regex klingt natuerlich immer elegant, auch wenn sowas eher bei homogenen Daten wirklich klappt, sowas wie Validierung wird dann schon eher schwer ...

Aber schoen dass ihr so schenll hier eine Loesung gefunden habt. Weiterhin viel Erfolg dann!
 
Zurück
Oben