Questão Dígitos correspondentes no modo de pesquisa estendida do Notepad ++


O manual do Notepad ++ é bastante vago no caractere especial para o numérico usado no modo de pesquisa estendida. Ele diz: \ d ### - valor decimal (entre 000 e 255) mas literalmente entrar "\ d ###" não corresponde a nada.

O que estou tentando fazer é substituir

if VarA == 12
  VarB = 1

com

if VarA == 12
  Var12=1
  VarB=1

4


origem




Respostas:


Eu estava apenas procurando uma resposta para essa pergunta. Depois de dar uma olhada no wiki do NP ++, eu não acho \d está combinando com o que queremos que corresponda.

\ d
  a representação decimal de um byte, composta por 3 dígitos na faixa de 0 a 9

Não está combinando com um caractere numérico regular, está combinando com um código de byte. Segue o \d com um número de 3 dígitos e corresponderá ao caractere ASCII correspondente.

Em outras palavras, \d032 corresponde ao caractere de espaço, \d033 corresponde a um ponto de exclamação e assim por diante. Veja aqui uma lista de códigos.

Infelizmente, isso significa que você não pode simplesmente combinar "qualquer dígito" usando as opções estendidas, você terá que usar as expressões regulares e encontrar uma maneira de contornar o problema da nova linha.


2



Você deve ser capaz de usar \ r \ n para a nova linha ou \ n (dependendo do seu SO). - Blackbeagle
@Blackbeagle: Não, você não pode, essa é exatamente a razão para essa pergunta. O NP ++ não combina com novas linhas no modo de expressão regular, mas possui um modo temporário que combina caracteres especiais como \n, mas você não pode usar por exemplo [0-9] naquilo. - DisgruntledGoat


eu estava tendo exatamente o mesmo problema! Eu encontrei uma solução alternativa. Primeiro, use o modo de pesquisa 'Estendido' (o que você chama de 'modo temporário') para localizar e substituir todos os caracteres de nova linha por algum caractere aleatório que não esteja no texto. Por exemplo, substituí todos os meus caracteres de nova linha por um til ('~'). Em seguida, alterne para o modo de pesquisa "Expressão regular" e, agora, você pode procurar por novas linhas consultando-as pelo caractere substituído. Quando terminar de manipular o texto com localizar e substituir, mude o caractere aleatório de volta para as novas linhas. É isso aí!


2





if VarA == 12  
    VarB = 1

if VarA == 16  
    VarB = 0

Usando Localizar / Substituir com expressão Regular

Encontre o que: if VarA == ([0-9]+)
Substituir com: if VarA == \1 \n\t Var\1=1

Execute "Substituir Tudo"

Resultado:

if VarA == 12  
     Var12=1  
    VarB = 1

if VarA == 16  
     Var16=1  
    VarB = 0 

É isso que você estava procurando?


1



Embora isso funcione agora, tenha em mente que a pergunta original foi feita antes do Notepad ++ ter melhorado seu mecanismo de expressão regular. - Dane


Tentando esclarecer: Pelo que entendi seu código, o que você está tentando fazer é procurar por:

se VarA ==

e, em seguida, armazene o valor numérico e, em seguida, substitua-o por

se VarA == Var = 1.

O problema não é a pesquisa, é que você está tentando armazenar o valor. Eu não sei se a função de pesquisa / substituição pode fazer uma coisa dessas.


0