Usando RegEX para prefixar e anexar no Notepad ++


88

Tenho uma lista bastante grande de palavras em um arquivo txt e estou tentando localizar e substituir regex no Notepad ++. Preciso adicionar uma string antes de cada linha e depois de cada linha .. Para que:

palavra uma
palavra dois
palavra três

tornar-se

capaz: "wordone"
capaz: "wordtwo"
capaz: "palavra três"

Como posso fazer isso?


Desculpe, essas cadeias de palavras devem estar em linhas separadas! Aposto que isso confundiu as coisas agora ...
zuk1

doce me poupe muito pesquisando :)
melaos

Respostas:


171

Presumindo palavras alfanuméricas, você pode usar:

Search  = ^([A-Za-z0-9]+)$
Replace = able:"\1"

Ou, se você quiser apenas destacar as linhas e usar "Substituir tudo" e "Na seleção" (com a mesma substituição):

Search = ^(.+)$

^aponta para o início da linha.
$aponta para o fim da linha.

\1 será a correspondência de origem entre parênteses.


obrigado, após cerca de 30 minutos de pesquisa, cheguei aqui para o sucesso :)
dhaval

Expressões de registro são salva-vidas. Obrigado pela ajuda.
Techgration

Excelente trabalho +1 para explicar
SSH Este

Uau! Isso é exatamente o que eu precisava.
Chuck Le Butt

No N ++ mais recente, ^([A-Za-z0-9]+)$não retornou correspondências, mas ^(.+)$funcionou em todos os cenários. Obrigado!
Laurie Stearn

29

Por que você não usa os recursos de edição de várias linhas do Notepad ++?

Mantenha a tecla Alt pressionada enquanto seleciona o texto (usando sua abordagem usual de clicar e arrastar) para selecionar texto em várias linhas. Isso às vezes também é conhecido como edição de coluna.

Você pode colocar o cursor no início do arquivo, pressione (e segure) Alt, Shift e então continue pressionando a seta para baixo ou PageDown para selecionar as linhas que deseja preceder com algum texto :-) Fácil. A edição multilinha é um recurso muito útil do Notepad ++. Também é possível no Visual Studio, da mesma maneira, e também no Eclipse, alternando para o Modo de Seleção de Bloco pressionando Alt + Shift + A e, em seguida, use o mouse para selecionar o texto entre as linhas.


1
+1 Isso é realmente ótimo, eu não tinha ideia de que você poderia fazer isso. É possível acrescentar algo ao final de cada linha, quando o comprimento de cada linha é diferente? Por exemplo, quando a largura da 'coluna' varia, seria legal se você pudesse anexar texto a cada linha. Eu tenho uma lista de funções e preciso acrescentar "();" para cada linha, mas cada nome de função tem uma largura diferente. No momento, estou usando uma macro para fazer isso, obrigado!
SSH em

5
para anexar é provavelmente melhor usar apenas localizar / substituir simples usando o modo de pesquisa "Estendida". Você pode pesquisar o final da linha, por exemplo, \r\ne substituí-lo por<whatever you want to append>\r\n
Peter Perháč

Esta é realmente uma ótima solução, especialmente com o comentário APPEND acima.
Chuck Le Butt

2
Isso é útil para prefixar, mas não é tão útil se você quiser pós-fixar linhas de comprimento misto (anexar no final). Desejo que o Notepad ++ tenha um comando interno "Modificar linhas", como no Notepad2, que permite selecionar as linhas, pressionar Alt + M e adicionar texto antes e / ou depois de cada linha.
thdoan

21

Expressão regular que pode ser usada:

Find: \w.+
Replace: able:"$&"

As, $&fornecerá a string que você procura.

Consulte: regexr


6
Grande menção de $&! O \1não funciona em todos os ambientes.
pfabri

Ótima resposta sobre $&. Ele funciona no SublimeText também.
WesternGun

Ótima resposta sobre $&. Ele também funciona no código do VS.
P. Frank

5

Use uma macro.

Macro> Iniciar Gravação

Use o teclado para fazer suas alterações de maneira repetível, por exemplo

home> digite "capaz"> fim> seta para baixo> home

Em seguida, volte ao menu e clique em parar gravação e execute uma macro várias vezes.

Isso deve bastar e sem complicações baseadas em regex!


4
O que significa "complicações"? :-)
Tomalak

+1 para facilidade de uso! Eu precisava anexar uma 'guia' ao final de cada linha em um arquivo e essa dica funcionou.
NateJ
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.