Como você removeria um caractere específico entre duas palavras?

1

Estou procurando fazer o seguinte. Eu tenho 1400+ destes para fazer.

Application=M:TB+\GOG.Com_Levels_To_Hell\Launch_99_Levels_To_Hell.Lnk
WorkingFolder=M:TB+\GOG.Com_Levels_To_Hell\

ExitMethod=WinClose

Eu quero fazer isso

Application=M:TB+\GOG.Com_Levels_To_Hell\Launch 99 Levels To Hell.Lnk
WorkingFolder=M:TB+\GOG.Com_Levels_To_Hell\

ExitMethod=WinClose

Eu só quero segmentar a parte entre "Launch" e "Lnk". Removendo todo o _ entre.

Existe alguma maneira de fazer isso?

    
por Christopher Shaw 07.04.2017 / 04:14

1 resposta

1

Como posso substituir um caractere na última parte de um caminho somente em linhas específicas usando o Notepad ++?

A melhor e possivelmente única maneira de proceder é regex. Isso levou um pouco de reflexão, mas o seguinte deve funcionar:

Pesquisar : (?<!\)(?!.*\)_(?=.*Lnk)

Substituir por :

(caractere de espaço ↑)

(no atual / todos os documentos; NB: ' ' é o caractere de espaço)

Explicação

  • Para combinar peças após a última barra invertida , combinamos uma aparência negativa com uma visão negativa: (?<!\)(?!.*\) .

    (Eu admito que essa parte foi um pouco de magia negra que eu ainda não entendo completamente - não há \ atrás e não \ seguido de algum personagem à frente?)

  • Corresponda ao sublinhado: _

  • Você deseja corresponder apenas as linhas que correspondem ao atalho Application , por isso, certifique-se de que a linha termine com ' Lnk ' usando uma visão de antevisão negativa: (?=.*Lnk)

Resumo

Portanto, corresponde a sublinhados , mas somente após a última barra invertida e somente em linhas que terminam em 'Lnk' . Isto é, (?<!\)(?!.*\)_(?=.*Lnk)

Demonstração

Experimente na regex101!

Eu só poderia usar as linhas que você forneceu, mas desde que satisfaçam essas suposições (operando na última parte depois de barras invertidas, sublinhados e terminando com 'Lnk'), ele deve funcionar grandemente para outras linhas também.

    
por 07.04.2017 / 13:31

Tags