wenn Übereinstimmung (g: Möglichkeiten „mit Rückreferenzierungen nach dem regulären Ausdruck in vim \ (Skript \)?“)

StackOverflow https://stackoverflow.com/questions/1995286

  •  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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top