Se Match (G: Possibilidades, “Usando referências após o Regex em Vim (Script )?”))
-
22-09-2019 - |
Pergunta
Eu gostaria de poder, digamos, verificar o valor de US $ 1 dentro do bloco IF, para obter a primeira referência de back -referência. No entanto, o VimScript não é Perl.
Existe alguma maneira de fazer isso? Estou ciente da possibilidade de usar 1, 2, etc., dentro da regex, mas gostaria de combinar e depois usar os valores nas declarações subsequentes, como é possível em Perl, Php, etc.
Por exemplo, seria muito bom ter na parte avaliada dos comandos g //, para que você pudesse fazer coisas como
:g/number: \(\d\+\)/b:number += v:matches[1] " or whatever the syntax is/could be
para totalizar os valores de algum número em um arquivo.
Isso pode ser feito?
Caso contrário, existe uma boa razão?
Solução
matchlist({expr}, {pat}[, {start}[, {count}]])
Retorna 1, 2, 3, etc, conforme encontrado ao procurar {pat}
dentro {expr}
Exemplo:
Echo Matchlist ('ACD', '(a) ? (b) ? (c) ? (.*)'))
Resultados em: ['ACD', 'A', '', 'C', 'D', '', '', '' ',' '' '
Outras dicas
Em outras revelações que fiz :lhelpgrep submatch | lope
e descobriu pelo menos uma outra instalação útil: que você pode usar submatch({nr})
do lado avaliado de um substitute
comando. POR EXEMPLO
:s/there a\(r\)e n\(o \)stupid questions, on\(ly\) stupid people/\=toupper(submatch(2).submatch(1).submatch(3)."?")/
Eu tentei essa abordagem antes, mas acho que estava procurando / backref / e não obtive as informações que estava procurando.