wenn Übereinstimmung (g: Möglichkeiten „mit Rückreferenzierungen nach dem regulären Ausdruck in vim \ (Skript \)?“)
-
22-09-2019 - |
Frage
Ich möchte in der Lage sein, sagen wir, den Wert von 1 innerhalb des if-Block $ zu überprüfen, die erste Rückreferenzierung zu erhalten. Allerdings vimscript ist nicht perl.
Gibt es eine Möglichkeit, dies zu tun? Ich bin über die Möglichkeit von 2 \ 1, \ usw. verwendet wird, in der Regex, aber ich möchte und die Werte dann passen in den folgenden Anweisungen verwenden, ist wie möglich in Perl, PHP, etc.
Zum Beispiel wäre es wirklich schön, in dem ausgewerteten Teil zu haben, von g // Befehlen, so dass Sie Dinge tun könnten, wie
:g/number: \(\d\+\)/b:number += v:matches[1] " or whatever the syntax is/could be
die Werte einer bestimmten Anzahl in einer Datei insgesamt.
Kann dies geschehen?
Wenn nicht, gibt es einen guten Grund?
Lösung
matchlist({expr}, {pat}[, {start}[, {count}]])
Returns \ 1, \ 2, \ 3, usw., wie gefunden bei der Suche nach {pat}
in {expr}
Beispiel:
echo Match ( 'acd', '(a) \? (B) \? (C) \? (. *))
Ergebnisse in: [ 'acd', 'a', '', 'c', 'd', '', '', '', '', '']
Andere Tipps
In weiteren Offenbarungen ich getan habe :lhelpgrep submatch | lope
und entdeckt mindestens eine andere nützliche Einrichtung: dass Sie submatch({nr})
von der ausgewerteten Seite eines substitute
Befehl verwenden können. EG
:s/there a\(r\)e n\(o \)stupid questions, on\(ly\) stupid people/\=toupper(submatch(2).submatch(1).submatch(3)."?")/
habe ich versucht, diesen Ansatz vor, aber ich glaube, ich war auf der Suche nach / backref / und nicht die Informationen bekommen habe ich suchte.