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?


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 :)


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]"


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".


0

Eu tenho o Notepad ++ v6.8.8

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

Substituir : [\ '\ 1 \']

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


-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);

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.