Expressões Regulares

Samuel Dias Neto
sdiasneto@yahoo.com.br

 

Expressões regulares são combinações de alguns caracteres especiais que auxiliam na busca de determinados padrões e conjuntos de caracteres seja em um texto ou no nome de arquivos.

Vários programas e linguagens de programação tem suporte a expressões regulares, entre eles podemos citar: grep, egrep, find, sed, awk, lex, perl, tcl e python.


.

O ponto corresponde a qualquer caractere em sua posição. Exemplo:

samuel@aranha:~$ cat teste.txt
Expressões Regulares são combinações de alguns caracteres especiais
que auxiliam na busca de determinados padrões e conjuntos de caracteres
seja em um texto ou no nome de arquivos de determinado(s) diretório(s).

Vários programas e linguagens de programação tem suporte a expressões
regulares, entre eles podemos citar: grep, egrep, find, sed, awk, lex,
perl, tcl e python.
samuel@aranha:~$ grep Regulares teste.txt
Expressões Regulares são combinações de alguns caracteres especiais
samuel@aranha:~$ grep regulares teste
regulares, entre eles podemos citar: grep, egrep, find, sed, awk, lex,
samuel@aranha:~$ grep .egulares teste.txt
Expressões Regulares são combinações de alguns caracteres especiais
regulares, entre eles podemos citar: grep, egrep, find, sed, awk, lex,
samuel@aranha:~$

Observe que quando usamos a expressão regular .egulares o comando grep retornou tanto a linha com "Regulares" quanto a linha com "regulares".


[ ]

Os colchetes podem corresponder a qualquer um dos caracteres dentro dele:

[abcd]  => corresponde a qualquer um dos caracteres a,b,c ou d

e também pode corresponder a qualquer caractere num determinado intervalo:

[a-d]   => corresponde a qualquer caracter no intervado de a até d

Exemplos:

samuel@aranha:~$ grep [rR]egulares teste.txt
Expressões Regulares são combinações de alguns caracteres especiais
regulares, entre eles podemos citar: grep, egrep, find, sed, awk, lex,
samuel@aranha:~$ grep [a-z]egulares teste.txt
regulares, entre eles podemos citar: grep, egrep, find, sed, awk, lex,
samuel@aranha:~$ grep [A-Z]egulares teste.txt
Expressões Regulares são combinações de alguns caracteres especiais
samuel@aranha:~$ grep [a-zA-Z]egulares teste.txt
Expressões Regulares são combinações de alguns caracteres especiais
regulares, entre eles podemos citar: grep, egrep, find, sed, awk, lex,
samuel@aranha:~$

se você iniciar os colchetes com o caracter ^ a correspondência será com todos os caracteres, exceto aqueles dentro dos colchetes. Exemplo;

samuel@aranha:~/teste$ ls
arq1  arq2  arq3  arqA  arqB
samuel@aranha:~/teste$ find . -regex .*arq[^A-Z]
./arq1
./arq2
./arq3
samuel@aranha:~/teste$ find . -regex .*arq[^0-9]
./arqA
./arqB
samuel@aranha:~/teste$

OBSERVAÇÃO:Não esqueça que o find procura o nome do arquivo no PATH completo, por isso nossa expressão regular começa com .*, que em expressões regulares equivale a qualquer caracter.


*

O asterisco é um quantificador que corresponde ao caracter imediatamente anterior zero ou mais vezes

a* => corresponde a: "nada" a aa aaa aaaa ...

+

O sinal de adição é outro quantificador, porém corresponde ao caracter imediatamente anterior uma ou mais vezes

a+ => corresponde a: a aa aaa aaaa ....

?

O sinal de interrogação é outro quantificador, porém corresponde ao caracter imediatamente anterior zero ou uma vez apenas

a? => corresponde a: "nada" a

{ }

As chaves definem um quantificador numérico.

[0-9]{5}

a expressão regular acima corresponde a uma string de cinco dígitos, os quais podem variar entre zero e nove.

Também podemos definir um intervalo para o quantificador numérico:

{,5} => de zero a cinco

{5,} => de cinco a infinito

{3,5} => de três a cinco

^

Corresponde a expressão procurada no início da linha.

samuel@aranha:~/teste$ cat teste.txt
Expressões Regulares são combinações de alguns caracteres especiais
que auxiliam na busca de determinados padrões e conjuntos de caracteres
seja em um texto ou no nome de arquivos de determinado(s) diretório(s).
Elas não são expressões tabulares. Aliás, nem sei o que são
Expressões Tabulares.

Vários programas e linguagens de programação tem suporte a expressões
regulares, entre eles podemos citar: grep, egrep, find, sed, awk, lex,
perl, tcl e python.
samuel@aranha:~/teste$ cat teste.txt | grep ^Expressões
Expressões Regulares são combinações de alguns caracteres especiais
Expressões Tabulares.
samuel@aranha:~/teste$

$

Corresponde a expressão procurada no final da linha.

samuel@aranha:~/teste$ cat teste.txt
Expressões Regulares são combinações de alguns caracteres especiais
que auxiliam na busca de determinados padrões e conjuntos de caracteres
seja em um texto ou no nome de arquivos de determinado(s) diretório(s).
Elas não são expressões tabulares. Aliás, nem sei o que são
Expressões Tabulares.

Vários programas e linguagens de programação tem suporte a expressões
regulares, entre eles podemos citar: grep, egrep, find, sed, awk, lex,
perl, tcl e python.
samuel@aranha:~/teste$ cat teste.txt | grep expressões$
Vários programas e linguagens de programação tem suporte a expressões
samuel@aranha:~/teste$

Resumo das expressões regulares

.     => qualquer caractere em sua posição
[acz] => qualquer um dos caracteres, no caso: a, c ou z
[a-d] => qualquer caracter do intervalo, no caso: a,b,c ou d
[157] => 1,5 ou 7
[0-7] => 0,1,2,3,4,5,6 ou 7
[^Z]  => qualquer caractere, exceto Z
a*    => "a" zero ou mais vezes
a+    => "a" uma ou mais vezes
a?    => "a" zero ou uma vez
a{5}  => "a" cinco vezes
a{5,} => "a" de cinco a infinito vezes
a{,5} => "a" de zero a cinco vezes
^a    => "a" no início da linha
a$    => "a" no final da linha
.*    => qualquer caractere

OBSERVAÇÕES: