Notepad ++ Localizar e substituir a sugestão de especialista

1

Preciso de ajuda com Localizar e substituir no Notepad ++.

Exemplo:

US $ 250 'Olá 1' Tome '

por User162636 11.06.2016 / 01:24

3 respostas

2

Marque a caixa de seleção Expressão regular e use:

Pesquisa:

\$(.*?) (.*?) Take '(.*?)'

Substituir:

\$$1 $2 Take '$1'

Isso irá procurar por uma linha que basicamente se parece com isso:

$anything anything Take 'anything'  

. significa qualquer caractere, exceto uma nova linha em expressões regulares.
Quebra de parênteses em torno de um grupo de captura como. *? irá armazenar o conteúdo dele em uma variável que é $ n onde n é o n-ésimo grupo.

Então, após a pesquisa, teremos três variáveis:
US $ 1 = 250 $ 2 = 'Olá 1' $ 3 =

por 11.06.2016 / 01:28
1

Esta deve ser a sintaxe do Notepad ++, depois de ter selecionado o botão de opção "Regular Expression" na parte inferior da caixa de diálogo Find / Replace:

Find:  (\$(\d+).*Take\s+').*(')
Replace:  

Explicação:

Variáveis do grupo de parênteses, contando da esquerda para a direita:

(\$(\d+).*Take\s+').*(')
|--------1--------|
   |-2-|             |3|

\ $: significa encontrar cifrão

\ d +: significa encontrar dígitos, "+" no final significa um ou mais (isto é, DEVE ter pelo menos um dígito).

. *: "." significa QUALQUER caractere e "*" significa um ou mais.

Take: é apenas especificamente a palavra Text.

\ s +: significa caracteres de espaço e "+" significa um ou mais.

...

Agora, porque tudo está agrupado, EXCETO os últimos caracteres nas aspas simples, então:


Apenas coloca o primeiro e o terceiro parênteses, com o segundo entre (onde o segundo parêntese é o valor em dólar).

    
por 11.06.2016 / 13:52
0

Tente isto

Primeiro, ative as expressões regulares

link

Localizar: (\$\d+)(.*Take ')(.*)(')
Substitua:

Captura

Existem quatro grupos para esta expressão

Entrada: $250 'Hello 1' Take '____'

Grupo 1
(\$d+) = $250 - isso diz começar com $ (escapou para ser literal) e depois dígitos ( \d ) 1 ou mais, para parar no último dígito se é 3 ou 15. No seu exemplo, eles estavam no início da linha, mas eu não assumo isso. Se, no entanto, eles iniciarem a linha, convém adicionar um ^ , tornando-o ^(\Sd+)

Grupo 2
(.*Take ') = 'Hello 1' Take ' - a expressão diz .* , o que significa qualquer caractere qualquer número de vezes, por isso é necessário levar tudo até ver Take e, em seguida, pega o Take ' porque eu escrevi isso e pára aí.

Grupo 3
(.*) = - ____ isso leva o espaço interno, basicamente, leva algo 0 ou mais vezes. Neste caso, é tudo sublinhado, mas escrito, pegaria tudo e qualquer coisa que você tenha lá. Ele pegaria tudo no final das linhas, exceto que eu tenho algo a seguir, que diz quando parar

Grupo 4
(') = - ' isto diz ao grupo 3 para parar na marca ' . ele também captura a marca ' em seu próprio grupo para reorganizar.

Substituição

Os grupos são numerados a partir de seus parênteses abertos, mas neste caso, tudo é linear, sem aninhamento, por isso é bastante óbvio. deixaria tudo como está. Mas nós queremos substituir o terceiro grupo pelo primeiro grupo, então .... faz o truque. Um dos pontos-chave aqui foi garantir que capturássemos o quarto grupo para substituí-lo no final. Além disso, nada muito complicado.

Execução

Então, basta configurar isso em sua substituição de localização e, em seguida, pressionar substituir tudo, e isso deverá resolver você.

Editar

Eu notei que você queria retirar o $ em seu substituto, então você precisa fazer algumas pequenas alterações nas minhas sugestões iniciais, embora seja basicamente o mesmo.

Entrada: $250 'Hello 1' Take '____'

Localizar: (\$)(\d+)(.*Take ')(.*)(')
Substitua:

    
por 13.06.2016 / 18:37