Como substituir todas as strings para números contidos em cada string no Notepad ++?

108

Estou tentando encontrar todos os valores com o seguinte padrão:

value="4"
value="403"
value="200"
value="201"
value="116"
value="15"

e substitua-o por valor dentro de escopos.

Estou usando a seguinte regex para encontrar o padrão:

.*"\d+"

Como posso fazer uma substituição?

Anton Selin
fonte
2
Qual é a peça de reposição? Você poderia dar um exemplo?
Toto
^. * value = "([^"] *) ". * $ verifique esta regex e repita o valor \ 1 onde o valor necessário
Nikhil KS

Respostas:

191

No Notepad ++ para substituir, pressione Ctrl+ Hpara abrir o menu Substituir.

Então, se você marcar o botão "Expressão regular" e quiser em sua substituição para usar uma parte do seu padrão de correspondência, você deve usar "grupos de captura" (leia mais no google ). Por exemplo, digamos que você deseja combinar cada uma das seguintes linhas

value="4"
value="403"
value="200"
value="201"
value="116"
value="15"

usando o .*"\d+"padrão e deseja manter apenas o número. Então você pode usar um grupo de captura em seu padrão de correspondência, usando parênteses (e ), assim: .*"(\d+)". Portanto, agora em sua substituição, você pode simplesmente escrever $1, onde $ 1 se refere ao valor do primeiro grupo de captura e retornará o número de cada combinação bem-sucedida. Se você tivesse dois grupos de captura, por exemplo (.*)="(\d+)",$1 retornará a string valuee $2retornará o número.

Então, usando:

Encontrar: .*"(\d+)"

Substituir: $1

Vai te devolver

4
403
200
201
116
15

Observe que existem muitas maneiras alternativas e melhores de corresponder ao padrão mencionado acima. Por exemplo, o padrão value="([0-9]+)"seria melhor, pois é mais específico e você terá certeza de que 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 vou deixá-lo por enquanto :)

psxls
fonte
19
Para substituir, $1não funcionou para mim. Eu usei em \1vez disso e funcionou.
Jason Wheeler
12
\1Funciona em todas as versões do Notepad ++. $1só funciona nos mais novos.
Cullub
Acho que isso não funciona com o Hex Editorplugin. No modo de exibição hexadecimal, o Notepad ++ não mostra a Regular Expressionopção para Pesquisar / Substituir. No modo de visualização de texto, vejo a Regular Expressionopção Pesquisar / Substituir. Estou usando o Notepad ++ versão 6.9.2, que é a versão atual no momento.
Kevin Fegan
15

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 como você pode realizar sua tarefa:

Pesquise o padrão: valor = \ "([0-9] *) \" E substitua por: \ 1 (o que quer que você queira fazer em torno desse grupo de captura)

Ex. Cerque com colchetes

[\ 1] -> produzirá valor = "[4]"

dchayka
fonte
1
\1Me ajudou a manter o número, mas remover a citação por trás dele. Eu tinha cerca de 7400 linhas em um documento como tablename.columnname = '12345'. A primeira citação foi fácil de remover, a segunda foi feita usando seu \1na caixa de texto de substituição. Obrigado, +1
Ben Fransen
6

Substituir (.*")\d+(")

Com $1x$2

Onde xestá o seu "valor dentro de escopos".

Marsze
fonte
0

Eu tenho o Notepad ++ v6.8.8

Encontre : [([a-zA-Z])]

Substituir : [\ '\ 1 \']

Irá produzir: $ array [XYZ] => $ array ['XYZ']

Juan Tapiador
fonte
-3

Encontrar: value="([\d]+|[\d])"

Substituir: \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);
user3178007
fonte
3
Como esta solução JavaScript se relaciona com a questão que foi marcada com o Notepad ++?
Jason Aller
Como as respostas defeituosas 1 e 2 podem estar relacionadas à pergunta marcada com o Notepad ++?
user3178007
Por que fiz a pergunta aqui? Porque não posso criar perguntas. Porque não tenho pontuação de reputação suficiente.
user3178007
1
Não existe o requisito de reputação para fazer as perguntas que você afirma - você não poderia ter sido restringido. Tente novamente: stackoverflow.com/questions/ask
BoltClock
A pergunta foi feita. stackoverflow.com/questions/24112018/… Mas limitado em palavras para pesquisar. A limitação é!
user3178007