sábado, 8 de dezembro de 2012

Expressão regular no Notepad++

Não sabe o que é Notepad++ ? Então clique aqui.

Hoje fui atualizar um pacote SDL e me deparei com o seguinte problema: precisei criar um arquivo Makefile para realizar a compilação da nova versão da SDL pois só há para VisualC, que é totalmente diferente.

Veja como os arquivos são dispostos no arquivo .dsp:

# Begin Source File

SOURCE=..\..\src\SDL.c
# End Source File

Mas Eu preciso que eles fiquem assim:

SDL.o: ..\..\src\SDL.c
$(CC) -Wall -s -O2 -c ..\..\src\SDL.c $(CFLAGS)

Se fosse no máximo 10 linhas tudo bem, mas são 114 linhas e manualmente eu perderia a minha noite preciosa. 

Pesquisando sobre expressão regular consegui a busca ideal, mas tinha outro problema que era substituir usando os termos capturados, então seguindo aquela velha lógica de tentativas, $1 me deu os campos capturados e consegui resolver o problema.

Segue abaixo minha expressão regular:

Localizar: SOURCE=(.*)[\\](.*)\.c

Substituir por: $2\.o: $1\\$2\.c\r\n\t$\(CC\) -Wall -s -O2 -c $1\\$2\.c $\(CFLAGS\)

Vendo a importância desse recurso e sabendo que poucos usam, decidi criar um breve tutorial.

Como exemplo iremos inserir o nome de uma pasta qualquer entre o diretório e o nome do arquivo 'notepad++.exe' do caminho abaixo:

C:\Program Files\Notepad++\notepad++.exe

Primeiro capturamos tudo até que encontre a última barra '\'

Observe que '\\' é o escapamento do caractere '\', em seguida capturamos todo o resto. Obs.: a barra não será capturada.

Expressão regular:
(.*)[\\](.*)

Como será processada a busca:
(.*)                   [\\] (.*)
C:\Program Files\Notepad++      \      notepad++.exe

A cada () encontrado é gerado um parâmetro ex: $1, $2, ..., $n

Logo teremos um $1 e $2 para o caminho e o nome do arquivo consecutivamente.

Cole o caminho completo em uma nova aba e pressione Ctrl + H

Cole a expressão regular e em 'Substituir por:' cole a linha abaixo:
o caminho é $1 e o arquivo é $2

Para inserir o nome de uma pasta cole em 'Substituir por:' a linha abaixo:
$1\\Nova pasta\\$2

É isso pessoal, observe que esse tutorial não aborda profundamente o conceito de expressão regular mas apenas a sintaxe que o campo 'Substituir por:' interpreta os parâmetros gerados pelo busca, usando a expressão do campo 'Localizar:'.

Autor do tutorial: Francimar Alves (contado: mazin.z@hotmail.com).


Nenhum comentário: