Se Match (G: Possibilidades, “Usando referências após o Regex em Vim (Script )?”))

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

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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top