Lassen Sie uns die folgende Vorlage betrachten:Ist es möglich, reguläre Ausdrücke (oder allgemeinere Vorlagen) zu verwenden, um Variablen zu definieren?
*aaa*bbb*
Es sollte alle Strings zurück, die aaa
sowie bbb
als Unterketten (mit der Einschränkung, dass bbb
nach aaa
kommt) enthalten.
Was ich will, haben die Möglichkeit, Teilketten zu verwenden, die (1) vor aaa
, (2) zwischen aaa
und bbb
sowie (3) nach bbb
(einige dieser Unterketten leer sein könnte). Also, im Grunde möchte ich wissen, was hinter jedem Stern steht. Genauer gesagt, möchte ich diese drei Unterzeichenfolgen verwenden, um eine neue Zeichenfolge (Ausgabe) zu erstellen.
Zum Beispiel könnte ich die erste und die zweite Teilzeichenfolgen austauschen möchten, setzen Sie ccc
zwischen ihnen und entfernen Sie die letzte Teilzeichenfolge (sowie und bbb
). Was ich will, in der folgenden formalen Art und Weise ausgedrückt kann tun werden:
{?x1}aaa{?x2}bbb{?x3} -> {?x2}ccc{?x1}
Bitte beachte, dass ich *
von {?x1}
, {?x2}
und {?x1}
ersetzt haben. Auf diese Weise definiere ich drei Variablen, die ich später verwende.
Zum Beispiel, wenn ich XXXaaaYYYbbbZZZ
als Eingabe haben, sollte ich die folgende Zeichenfolge als Ausgabe erzeugen: YYYcccXXX
ADDED
Meine Frage ist, ob es eine flexible Template-Sprache ist, die definiert ermöglicht auch "Variablen" (Teile der ursprünglichen Eingabesequenz, die zur Definition einer neuen Ausgabesequenz verwendet werden können). Ich sollte wahrscheinlich hinzufügen, dass ich eine Python-Lösung brauche.
@anubhava, ich habe meine Frage korrigiert. – Roman
Klingt wie Sie wollen Referenzen, die Teil der meisten regulären Ausdruck Bibliotheken sind, einschließlich Pythons. Z.B. 're (" (. *) aaa (. *) bbb (. *) ", r" \ 2ccc \ 1 "," XXXaaaYYYbbbZZZ "). – jpkotta
@jpkotta, danke. Es ist genau das, was ich brauchte! Übrigens, warum hast du es nicht als Antwort (anstatt als Kommentar) gepostet? – Roman