RegExMatch$ multiline

Hallo zusammen,
wie kann ich bei den RegEx Funktionen den MultiLine-Modus einschalten? Ein /m am Ende funktioniert anscheinend nicht.

Lieben Gruß.

Wie erzeugst Du denn die Multiline-Inhalte? Ich habe im Designer

  • chr$(13)
  • die Kombination aus chr$(13) und chr$(10)
  • das Umbruchszeichen

in einer Benutzervariable verwendet und da per RegExMatch$ ohne Modifier jeweils irgendwas drin gesucht, das hat immer funktioniert. Hast Du mehr Input?

Hallo,
ich lese ein Feld mit \r\n aus einer Datenbank. Dieses möchte ich anders aufteilen:
EREF+080100187677431S08121\r\n90192156\r\nKREF+H201812191001394001000\r\n0477\r\nSVWZ+SA058174001993S081219\r\n0192156\r\nABWA+Landeshauptkasse Berli\r\nn

Diesen Inhalt möchte ich Autteilen in 2 Zeilen:
EREF+…KREF+…ABWA+… und die Umbrüche erhalten.
SVWZ+…und die Umbrüche löschen.

Erste Zeile: RegExSubst$ (Tabelle.Beleg.Verwendungszweck, “(?=SVWZ+)(.?)(?=\s(EREF+|ABWA+|KREF+|$))”,"")
Zweite Zeile:
ChrSubst$ (RegExMatch$ (Tabelle.Beleg.Verwendungszweck, “(?=SVWZ+)(.?)(?=\s(EREF+|ABWA+|KREF+|$))”), Chr$(13) + Chr$(10), “”)

Ich hoffe, das reicht an Information.

LG

RegExes - schon lange nicht mehr tief vergraben :slight_smile:. Das “+” musst Du glaube ich escapen, sonst wird es als Quantifier ausgewertet.

Etwas länger für die erste Zeile, aber vielleicht funktionierend:

RegExSubst$ (@Input, "(EREF\+.+)(KREF\+.+)(SVWZ\+.+)(ABWA\+.+)","\1\2\4")

und die entsprechende Umformung für die zweite Zeile? Oder kann sich die Reihenfolge der Blöcke von Record zu Record ändern?

Hab wohl Probleme mit dem Editor im Board und das nicht gesehen. Keine Ahnung, wie man den Text eingibt, ohne das er verändert wird.
Erste Zeile:
RegExSubst$ (Tabelle.Beleg.Verwendungszweck, "(?=SVWZ\+)(.*?)(?=\s*(EREF\+|ABWA\+|KREF\+|$))","")
Zweite Zeile:
ChrSubst$ (RegExMatch$ (Klaerungen.Beleg.Verwendungszweck, "(?=SVWZ\+)(.*?)(?=\s*(EREF\+|ABWA\+|KREF\+|$))"), Chr$(13) + Chr$(10), "")

Es sind also alle Zeichen escaped.
Zur zweiten Zeile: Ja, die Reihenfolge wechselt und auch die Existenz eines Elementes. Ziel ist es auf jeden Fall, aus einer Zeile zwei zu machen, indem der Abschnitt SVXZ+ rausgenommen und hinten angehängt wird.

P.S. Danke für die Unterstützung!

Hm, ich hänge Dir mal das Projekt dran, mit dem ich in der Beispielanwendung getestet habe. Deinen Input-String habe ich in einer Benutzervariablen geparkt und “\r\n” durch den LL-Umbruch ersetzt (das passiert auch bei der Übergabe normalerweise automatisch). Das Ergebnis sieht (mit Deinen unveränderten RegExes) eigentlich gut aus. Ich teste das mit LL24. RegExTest.lsr (11.5 KB)

image

Der Tipp mit dem Ersetzten des Umbruchs ist die Lösung. Ich ersetzte vor der Übergabe der Daten alle \r\n durch Absatzzeichen. Die kann LL verarbeiten.
Vielen Dank für die Hilfe.

2 Likes