UltiSnips Regex Macthing
Ich möchte die Möglichkeit haben, eine Inline-Gleichung in Latex in eine Anzeigegleichung umzuwandeln.
Also will ich $something$werden
$$ something $$
Mein Versuch war folgender:
snippet "$(.+)$" "whatever" r
$$ \1 $$
$1
endsnippet
Meines Wissens nach (.+)würde das mit einem Zeichen mindestens einmal übereinstimmen (in einer Gruppe erfasst) und \1die Übereinstimmung in der Gruppe drucken.
Ich habe auch versucht, Python-Interpolation !p snip.rv = match.group(1)ohne Erfolg zu verwenden.
Beide Versuche führen nur zu einem eingefügten Tab. Irgendwelche Ideen?
Antworten
Aufgrund des Kommentars von Jake Grossman wurde mir schließlich klar, dass der $in der Regex enthaltene Trigger maskiert werden sollte: (Musste auch Python-Interpolation verwenden)
snippet "\$(.+)\$" "whatever" r $$
`!p snip.rv = match.group(1)`
$$ $0
endsnippet
Der Trigger direkt danach stimmt snippetmit allem überein $und erfasst es in einer Gruppe (mit dem ())
snip.rvSteht in der Python-Interpolation für "Rückgabewert" und gibt die match.group(1)erste Gruppe im regulären Ausdruck aus (in diesem Fall die einzige).