si un match (g: possibilités, « à l'aide après la regex des backreferences dans vim \ (script \)? »)

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

  •  22-09-2019
  •  | 
  •  

Question

Je voudrais pouvoir, par exemple, vérifier la valeur de 1 $ à l'intérieur du bloc si, pour obtenir la première backreference. Cependant vimscript est Perl.

Est-il possible de le faire? Je suis au courant de la possibilité d'utiliser \ 1, \ 2, etc., à l'intérieur du regex, mais je voudrais correspondre, puis utiliser les valeurs dans les instructions suivantes, comme cela est possible en perl, php, etc.

Par exemple, il serait vraiment agréable d'avoir dans la partie évaluée g // commandes, vous pouvez donc faire des choses comme

:g/number: \(\d\+\)/b:number += v:matches[1] " or whatever the syntax is/could be

pour le total des valeurs de certains nombre dans un fichier.

peut-il être fait?

Dans le cas contraire, est-il une bonne raison?

Était-ce utile?

La solution

matchlist({expr}, {pat}[, {start}[, {count}]])

Retourne \ 1, \ 2, \ 3, etc que l'on trouve lors de la recherche {pat} dans {expr}

Exemple:

  

echo listes de jumelage ( 'ACD', '(a) \? (B) \? (C) \? (. *)')

     

Le résultat: [ 'acd', 'A', '', 'C', 'D', '', '', '', '', '']

Autres conseils

Dans d'autres révélations que je l'ai fait :lhelpgrep submatch | lope et a découvert au moins une autre installation utile: que vous pouvez utiliser submatch({nr}) du côté évalué d'une commande substitute. EG

:s/there a\(r\)e n\(o \)stupid questions, on\(ly\) stupid people/\=toupper(submatch(2).submatch(1).submatch(3)."?")/

J'ai essayé cette approche avant, mais je pense que je cherchais / backref / et n'a pas obtenu les informations que je cherchais.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top