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?

zuk1
fonte
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.

Jonathan Lonowski
fonte
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.

Peter Perháč
fonte
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

Mukul Aggarwal
fonte
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!

Rob Stevenson-Leggett
fonte
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