Gelöst Versanddatenexport: RegEx-Match mit DotLiquid möglich?

balance-sports

Aktives Mitglied
1. September 2014
20
0
Hallo,

ich möchte Zeichenketten beim Versanddatenexport mit Hilfe von RegEx zerlegen.
Genauer gesagt suche ich eine Funktion, die mir den Teil einer Zeichenkette zurückliefert, der eine RegEx matched (ähnlich preg_match in PHP).

In der Doku finde ich lediglich die Funktion "Matches", die jedoch nur true/false zurückgibt (siehe Kategorie: JTL-Wawi:DotLiquid ? JTL-Guide).

Ich möchte beispielsweise alles was innerhalb von "[abc]...[/abc]" steht:
Wenn die Zeichenkette lautet: "Ich kann die Lösung [abc]zu dem Problem[/abc] einfach nicht finden"
Brauche ich den Teil: "zu dem Problem"

Gibt es eine solche Funktion mit DotLiquid?
Im Vorlageneditor für bspw. Rechnungsvorlagen gibt es genau diese Funktion (RegExMatch$ (,,)), doch kann ich diese auch im Versandatenexport nutzen? Wenn ja, wie?
Oder hat jemand Tipps für einen Workaround?
 

balance-sports

Aktives Mitglied
1. September 2014
20
0
AW: Versanddatenexport: RegEx-Match mit DotLiquid möglich?

Habe noch immer keine Lösung bzw. praktikablen Workaround gefunden.

Hat niemand einen Rat für mich?
Ich wäre euch für jeden Tipp sehr dankbar!
 

SebastianB

Moderator
Mitarbeiter
6. November 2012
2.083
335
AW: Versanddatenexport: RegEx-Match mit DotLiquid möglich?

Hi,

der Filter | Replace: 'suchtext', 'ergebnis' sollte das gewünschte erledigen.

Gruß,
Sebastian
 

balance-sports

Aktives Mitglied
1. September 2014
20
0
AW: Versanddatenexport: RegEx-Match mit DotLiquid möglich?

Vielen Dank für die Rückmeldung, Sebastian.

Kann ich denn Replace in Verbindung mit RegEx nutzen?

Ich möchte ja nicht bloß eine statische Zeichenkette ersetzen, sondern vielmehr einen Teil der gegebenen Zeichenkette "herausfiltern".
 

balance-sports

Aktives Mitglied
1. September 2014
20
0
AW: Versanddatenexport: RegEx-Match mit DotLiquid möglich?

Der Knoten ist geplatzt! :)

Mit einer Kombination aus String- und Array-Filtern funktioniert es... mit RegEx war ich wohl auf einem Holzweg.

Für mein obiges Beispiel wäre die Lösung:

Code:
{% if [B][I]Text[/I][/B] contains '[I][abc][/I]' -%}
    {% assign extract = [B][I]Text[/I][/B] | Split: '[I][abc][/I]' | Last | Split: '[I][/abc][/I]' | First -%}
    {{ extract | PrepareForCsv: 250, false }}\
{% endif -%};\


Edit: Offenbar fehlen mir die Rechte, um das Thema als "gelöst" zu markieren. Kann das doch jemand erledigen? Dankeschön!
 

SebastianB

Moderator
Mitarbeiter
6. November 2012
2.083
335
AW: Versanddatenexport: RegEx-Match mit DotLiquid möglich?

Hi,

ja Replace kann mit regulären Ausdrücken umgehen - ein Replace: '\[abc\]([^[]+)\[/abc\]', '$1' solle das gewünschte erledigen.

Gruß,
Sebastian