Você está na página 1de 8

CURSO COMPLETO EXPRESSÕES REGULARES

Editores de Texto
CURSO COMPLETO EXPRESSÕES REGULARES

Editores de Texto
Nos próximos exemplos, vamos propositadamente usar o mesmo exemplo de "regex" para validar, para que
possamos notar as diferenças de um aplicativo para o outro, didaticamente falando é melhor para compreender
as coisas, até porque já sabemos como aplicar outros exemplos.

Comumente estando sempre precisando das regex em diversos ambientes.


Principalmente em Editores de Texto quando você deseja remover, adicionar ou
alterar um conjunto de caracteres que tem formatos parecidos, porém com
conteúdos diferenciados. Então vamos ver alguns exemplos nesse sentido.

Vi/Vim/Nvim
O Vim (Vi melhorado) ou NeoVim (Novo Vim >> NeoVim) é um editor de texto, o que significa
que grande parte do seu código será dedicado ao trabalho com texto. O Vim tem suporte
poderoso para expressões regulares, mas, como de costume, há algumas peculiaridades.
CURSO COMPLETO EXPRESSÕES REGULARES

Há uma documentação bem detalhada no próprio Vim de como utilizar expressões regulares nele, se você digitar :help regexp
você obterá todas as informações necessárias.

Procurar normalmente no Vim basta digitar / ou ? e inserir a regex que deseja, mas aí tem alguns "poréns" que iremos ver nas
próximas linhas.

No vim existem algumas forma de interpretar as expressões regulares: \v (very magic, NÃO precisa escapar os metacaracteres) ;
magic (precisa escapar ALGUNS metacaracteres); nomagic precisa escapar MUITOS metacaracteres) e \V (very nomagic, precisa
escapar TODOS metacaracteres). Logo, para a gente o que mais interessa é o very magic (\v , "v" minúsculo) , pois haverá
portabilidade da nossa expressão para outros programas.

Ex.: pesquisar palavras que possuem hífen: [ESC]\v\w+-\w+ (\w casa com palavra e o mais quer dizer que ela pode aparecer 1 ou
mais vezes como já vimos), ou seja se não usássemos o \v no início, nossa expressão deveria ficar assim: \w\+-\w\+ , ou seja,
escapar o metacaractere + , caso contrário daria Padrão não encontrado no vim. Obs.: Você pode editar seu .vimrc e tornar essa
opção padrão por padrão, mais informações saiba em http:terminalroot.com.br/vim.

Percebemos que ao encontrar a expressão nosso texto casado não ficou colorizado, logo, para contornarmos isso poderemos
habilitar a opção hlsearch :set hlsearch ou somente :set hls

Se quiser que case a expressão ao digitar use :set incsearch ou somente :set is , para habilitar tanto a opção de cima quanto a
de baixo, use :set hls is.

Para usar substituição use o comando :% s/// para trocar a ocorrência da regex por outra. Vamos pôr em prática o conhecimento
utilizando esse texto como exemplo:
Uma Rede de computadores é formada por um conjunto de máquinas eletrônicas com processadores capazes de trocar informações
e compartilhar recursos, interligados por um sub-sistema de com única ação, ou seja, é quando há pelo menos dois ou mais
computadores, e outros dispositivos interligados entre si de modo a poderem compartilhar recursos físicos e lógicos, estes
podem ser do tipo: dados, impressoras, mensagens (e-mails), entre outros.
CURSO COMPLETO EXPRESSÕES REGULARES

Emacs
O editor de texto Emacs é uma poderosíssima ferramenta. Dizer que ele é somente um editor
de texto, é utilizar modéstia demais, porque ele é capaz de fazer muitas coisas:

ler e-mails;

acessar a internet;

fazer FTP;

jogar games;

e muitas outras coisas incríveis.
E se tratando de Expressões Regulares o assunto é extremamente avançado! O lado negativo
do Emacs (ou melhor, GNU Emacs) é que a maioria dos metacaracteres precisam ser
escapados para funcionar, no entanto, o lado positivo é que ele tem habilitado todos os
metacaracteres do padrão POSIX, ou seja, ainda assim é portável.

Vamos ver algumas dicas para casar e substituir Expressões Regulares no GNU Emacs.
CURSO COMPLETO EXPRESSÕES REGULARES


Abra o editor e clique em File e depois Open file para abrir um arquivo, vamos utilizar o texto do exemplo
anterior, ex.: redes.txt

Para habilitar procura de uma expressão regular tecle Alt+x (nos manuais lhe dará as coordenadas M-x, que
quer dizer Alt+x , ou seja o M é sempre Alt e o - é só um separador, não quer dizer que você deve digitá-lo ).

Após tecla M-x escreva: re-search-forward (re=regular expression; search=procurar; forward=pra frente) , ou
seja, se o cursor estiver antes do texto que você procura (e x, no início do texto, irá procurar a regex pra frente
do cursor), e logo depois insira sua expressão regular, ex.: (.*) , ou seja, procurar tudo que estiver entre
parênteses. Perceba que não foi preciso escapar os parênteses , pois como eu havia dito: alguns
metacaracteres precisam escapar pra funcionar , isso quer dizer que se você quiser usar o parênteses como
metacaractere precisa escapá-los, ex.; \(\). Caso deseje procurar para atrás (com o cursor depois da parte que
deseja procurar, ex.: fim da linha ou texto) use a mesma notação, mas troque o forward por backward , ficando:
re-search-backward.

Caso deseje que o Emacs 'colorize' o texto e encontre em tempo real, ou seja, case no momento da digitação,
utilize os comandos: M-x isearch-forward-regexp ou M-x isearch-backward-regexp , para frente e para atrás,
respectivamente.

Como a maior utilização das Expressões Regulares é pra ' casar' e substituir, no Emacs você utiliza o comando
M-x replace-regexp para isso, ex.: Substituir tudo dentro dos parênteses, inclusive os parênteses pela palavra
PARENTESES.
CURSO COMPLETO EXPRESSÕES REGULARES

O parâmetro <enter> quer dizer que você precisa teclar ENTER após digitar tal conteúdo.
M-x replace-regexp <enter>
(.*) <enter>
PARENTESES <enter>

Nesse caso, automaticamente todas as ocorrências do 'casamento' serão substituídas pela palavra
PARENTESES.


Para os comandos citados existe sempre um atalho, para isso consulte o Help do Emacs, tem muita coisa!

Existem mais algumas peculiaridades do GNU Emacs, por exemplo as aspas duplas funcionam na regexp
como delimitador de string M-x isearch-forward-regexp <enter> ..." especifica todas as strings que possuem 3
caracteres, para uma lista completa dessa peculiaridades, tecle M-x describe-syntax

Lembre-se sempre que ao tecla M-x comece digitando o que deseja, mas utilize bastante a tecla Tab pois ele irá
auto completar a sintaxe pra você!
CURSO COMPLETO EXPRESSÕES REGULARES
Gedit
Gedit é o editor de texto do GNOME. Embora vise a simplicidade e a facilidade de uso, o gedit é um poderoso editor de texto de
propósito geral. Numa pesquisa pessoal, descobri que é um dos editores de texto mais utilizado pelos usuários de Linux, embora
ainda possua bastantes usuários de Windows e macOS que o utilizam, nas versões que existem para esses sistemas. Talvez essa
seja a forma mais fácil de encontrar e substituir, no entanto, a ferramenta possui algumas limitações. Reutilizando o nosso texto
exemplo redes.txt


Abra o texto redes.txt e tecle Ctrl+h, aparecerá uma caixa de diálogo de nome Localizar e substituir , nela
haverá dois campos de input (Pesquisa e Substituir por), cinco checkboxes ( Diferenciar
maiúsculas/minúsculas, Coincidir apenas palavras completas , Expressão Regular, Pesquisa para trás e
Voltar ao início ) e 3 botões (Substituir todas, Substituir e Localizar) , para usarmos Expressões
Regulares marques somente os checkboxes: Expressão Regular e Voltar ao início . Se usarmos a forma
que utilizamos no Emacs para pesquisar parênteses e palavras dentro deles (.*) e clicarmos em Localizar
perceba que nesse caso ele irá 'colorir' todos os caracteres, logo, precisamos escapar os parênteses. Se
quiser substituir um de cada dez, clique somente em Substituir , se quiser substituir todos clique no devido
botão.

Ou seja, é muito simples, no entanto, ao utilizar com frequência você notará depois desse curso que nem
sempre ele se comporta como deseja, pelo menos até a versão testada na criação desse curso.
CURSO COMPLETO EXPRESSÕES REGULARES
Sed
Na minha opinião, a melhor ferramenta para utilizar expressões regulares, sem dúvida alguma!
Sed é o mesmo que Stream EDitor ou editor de fluxo. Muito utilizado nos sistemas tipo Unix.
Ao contrário dos editores convencionais, o sed atua em linha de comandos ou em Shell Script.
Pode, por exemplo, editar a terceira linha de vários arquivos com um só comando. Geralmente,
o Sed recebe como entrada, através de uma canalização, os dados sobre os quais irá atuar.
Aceita expressões regulares, o que lhe confere maior poder, convertendo-se em uma excelente
ferramenta para administradores de sistemas. Há uma versão do sed GNU/sed com alguns
recursos extras.
Continuando com o texto redes.txt , trocar as palavras com parênteses '( )' pela palavra
PARENTESES com Sed. Perceba que não foi preciso escapar os parênteses, mas se
escapássemos, ele selecionaria tudo, pois interpretaria como metacaractere.
sed 's/(.*)/PARENTESES/g' redes.txt
Dica: http://terminalroot.com.br/2015/07/30-exemplos-do-comando-sed-com-regex.html