Eu estou tentando encontrar todos os valores com o seguinte padrão:
value="4" value="403" value="200" value="201" value="116" value="15"
e substituí-lo por valor dentro dos escopos.
Eu estou usando o seguinte regex para encontrar o padrão:
.*"\d+"
Como posso fazer uma substituição?
No Notepad ++ para replace, pressione Ctrl + H para abrir o menu Substituir.
Então, se você marcar o botão “Expressão regular” e desejar que, em seu substituto, use uma parte do padrão correspondente, deverá usar “grupos de captura” (leia mais no google ). Por exemplo, digamos que você deseja corresponder a cada uma das seguintes linhas
value="4" value="403" value="200" value="201" value="116" value="15"
usando o padrão .*"\d+"
e deseja manter apenas o número. Você pode então usar um grupo de captura em seu padrão correspondente, usando parênteses (
e )
, assim:. .*"(\d+)"
. Então, agora, no seu substituto, você pode simplesmente escrever $1
, onde $ 1 faz referência ao valor do primeiro grupo de captura e retornará o número para cada partida bem-sucedida. Se você tivesse dois grupos de captura, por exemplo (.*)="(\d+)"
, $1
retornará o value
da string e $2
retornará o número.
Então, usando:
Localizar:. .*"(\d+)"
Substitua: $1
Ele te devolverá
4 403 200 201 116 15
Por favor, note que existem muitas maneiras alternativas e melhores de combinar o padrão acima mencionado. Por exemplo, o value="([0-9]+)"
padrão value="([0-9]+)"
seria melhor, pois é mais específico e você terá certeza de que ele corresponderá apenas a essas linhas. É até possível fazer a substituição sem o uso de grupos de captura, mas este é um tópico um pouco mais avançado, então deixarei por enquanto 🙂
psxls deu uma ótima resposta, mas acho que minha versão do Notepad ++ é um pouco diferente, então a captura de $ (cifrão) não funcionou.
Eu tenho o Notepad ++ v.5.9.3 e aqui está como você pode realizar sua tarefa:
Procure o padrão: value = \ “([0-9] *) \” E substitua por: \ 1 (o que você quiser fazer em torno desse grupo de captura)
Ex. Surround com colchetes
[\ 1] -> produzirá valor = “[4]”
Substituir (.*")\d+(")
Com $1x$2
Onde x
é o seu “valor dentro dos escopos”.
Eu tenho o Notepad ++ v6.8.8
Localizar : [([a-zA-Z])]
Substituir : [\ ‘\ 1 \’]
Produzirá: $ array [XYZ] => $ array [‘XYZ’]
Encontre: value="([\d]+|[\d])"
Substitua: \1
Isso realmente vai te devolver
4
403
200
201
116
15
js:
a='value="4"\nvalue="403"\nvalue="200"\nvalue="201"\nvalue="116"\nvalue="15"'; a = a.replace(/value="([\d]+|[\d])"/g, '$1'); console.log(a);