Notepad ++ Se uma linha contém uma palavra, substitua a linha a uma certa distância abaixo com uma frase

0

Tenho certeza de que isso é possível, e acho que envolve o Regex, mas não tenho ideia de como a formatação regex funciona, e ainda não consegui encontrar a expressão de que precisava em nenhum lugar.

Basicamente eu tenho um arquivo e quero encontrar todas as linhas que contenham a palavra juice e modificar a linha 10 para baixo e 34 caracteres para substituir o número existente (quase todos começam com 0.0) com um 1.

    
por Ivan Peterson 12.04.2016 / 03:56

1 resposta

1

Vou começar com um pequeno exemplo para que a resposta seja mais fácil de explicar. Se a sua pergunta foi encontrar 3 abaixo e substituir o 9º caractere por um '1':

Encontre o que: (.*juice.*\r\n)(.*\r\n.*\r\n)(.{8})(.)

Substitua por: $1$2${3}1

Modo de pesquisa: expressão regular

Explicação

Query:
()   Defines register in regex query. Later to be referenced as ${number}
.*   Defines 0 or more of any character
\r\n Defines a newline
.{8} Defines any character 0 or one time, {8} times
(.)  Defines one character, puts it in its own register 
     In this example, it is register $4, and unused in the replacement

Replace:
$1   Recall register 1 (line containing the word juice)
$2   Recall register 2 (multiple newlines to get us to the third row)
${3} Same meaning as $3, with the "3" in brackets so that it doesn't appear 
     as $31.
$3   Recall register 3 (text before the 9th character)
$4   Contains the contents of register 4. Not recalled, so this text is "replaced" 
     when the full substitution occurs.
1    Literal output the number 1.

Uma resposta literal à sua pergunta substituirá o conteúdo do campo Find what por algo como o seguinte:

(.*juice.*\r\n)(.*\r\n.*\r\n.*\r\n.*\r\n.*\r\n.*\r\n.*\r\n.*\r\n)(.{33})(.)

Eu recomendo aprender regex. Este não é um recurso específico do NotePad ++, mas não é tão seco quanto alguns tutoriais regex eu li: link

    
por 30.10.2017 / 17:35