Usando o wildcard replace no Notepad ++

0

stat x, y, z,

x / y / z são números. Existe algum comando regex no notepad ++ que me permita substituir todo o texto em um arquivo que corresponda ao padrão (stat x, y, z, (tenha em mente que os números que representam x / y / z variam)) de uma maneira que reduz x por 2, y e z por 1?

    
por Gyugas 06.02.2016 / 00:52

1 resposta

0

Não, você não pode fazer operações contra os grupos de captura em linha com o mecanismo de regex embutido. O que você pode fazer é ser muito esperto e usar um regex para escrever automaticamente um script que fará o trabalho que você quer, então execute o script e salve a saída desse script.

Regex para capturar os números:

^stat ?([0-9]+), ?([0-9]+), ? ([0-9]+)$

Explicação do regex:

  • ^ início de uma linha
  • string literal "stat"
  • ? espaço opcional
  • ([0-9]+) correspondência gulosa de qualquer sequência numérica, 1 ou mais caracteres.
  • , literal de vírgula
  • ? espaço opcional
  • ([0-9]+) correspondência gulosa de qualquer sequência numérica, 1 ou mais caracteres.
  • , literal de vírgula
  • ? espaço opcional
  • ([0-9]+) correspondência gulosa de qualquer sequência numérica, 1 ou mais personagens.
  • $ fim da linha

Você pode soltar isso no seu campo de localização, marcando para pesquisar como uma pesquisa de regex. Em seguida, no campo "Substituir por", você pode soltar a seguinte expressão:

@set /a sa=-2\n@set /a sb=-1\n@set /a sc=-1\necho stat %sa%, %sb%, %sc%\n

Você pode então pressionar replace-all e salvar o texto recém-gerado em um arquivo de lote e executá-lo, o que imprimirá seus valores modificados. Isso não levará 100% do caminho para um mecanismo totalmente automatizado. Você precisaria ter uma variável extra à qual você anexaria cada nova linha e, em seguida, imprimi-la apenas uma vez para obter uma saída limpa. Você pode enviar um pipe direto para um arquivo. Mas isso te deixa 99% do caminho até lá.

    
por 06.02.2016 / 02:17

Tags