Escolar Documentos
Profissional Documentos
Cultura Documentos
um mtodo formal de especificar um padro de texto Uma maneira de procurar um texto que voc no lembra exatamente como , mas tem uma idia das variaes possveis Uma maneira de procurar um trecho em posies especficas como no comeo ou no fim de uma linha, ou palavra Uma maneira de um programador especificar padres complexos que podem ser procurados e casados em uma cadeia de caracteres Uma construo que utiliza pequenas ferramentas, feita para obter determinada seqncia de caracteres de um texto
Informais
Expresses Regulares
Poucos usurios dominam satisfatoriamente os recursos providos pelas expresses regulares
Documentao existente no clara e completa
Programming Perl (Larry Wall, O'Reilly) possui um excelente captulo sobre o uso e aplicao de expresses regulares
Um pouco de histria
1943: as ER's surgiram a partir do estudo de dois neurologistas sobre o funcionamento dos neurnios humanos Alguns anos depois um matemtico definiu um modelo para representar este estudo
Foram definidos grupos regulares (regular sets) que deream origem as expresses regulares
Primeira implementao em computador deu-se em 1968 no editor qed que depois tornou-se ou ed
Comandos g e p do ed ( g/RE/p/) deram origem ao grep
Expresses Regulares
Metacaracteres Metacaracteres tipo representante
Ponto: .
Correspondem as ferramentas bsicas de uma expresso regular So combinados para representar o padro de busca desejado
Curinga que casa com uma nica letra, nmero, caracter especial (@,#,$,%,...) , TAB, o prprio ponto, ... Exemplos
.ato n.o .im 13.30 c.mprido pato, rato, gato, ... no, nao, no, ... fim, Fim, ... 13:30, 13.30, 13 30, 13-30, ... comprido, cumprido, ...
Lista: [...]
Mais especfica que o ponto, a lista determina quais caracteres ou smbolos podem ser casados S pode ser casado um caracter por vez dentro de cada lista
Introduo ao Sistema GNU/Linux - Copyleft (2004) Prof. M.Sc. Jansen Sena 3
Expresses Regulares
Exemplos
n.o n[a]o [pgr]ato 12[:. ]45 <[BIP]> no, nao, no, n9o, nxo, n@o,... no, nao (Obs: no casa com nao) pato, gato, rato 12:45, 12.45, 12 45 <B>, <I>, <P>
Observao
O ponto dentro da lista NO um metacaracter e sim um caracter normal
Expresses Regulares
Observaes
Como representar o - dentro de uma lista se ele especial? Deve-se sempre coloc-lo no final da lista [a-f-] = [abcdef-] [0-9-] = [0123456789-] Como representar o ] dentro de uma lista se ele especial? Deve-se sempre coloc-lo no incio da lista []] casa somente com o ] []6-9] casa com ],6,7,8,9 []-] casa com ] ou
Expresses Regulares
Representaes POSIX variam conforma a configurao do sistema Nos EUA, [[:upper:]] igual a [A-Z] No Brasil, [[:upper:]] inclui os caracteres acentuados ,,,...
Listas negadas
Funcionam com a lgica inversa da lista normal Tudo que encontra-se na lista no ser casado [^0-9] casa com qualquer smbolo que NO seja nmero [:;,.!?][^ ] casa com qualquer pontunao que no esteja seguida por um espao em branco
Expresses Regulares
Asterisco: *
Indica nenhuma ou muitas ocorrncias do padro anterior to*c tc, toc, tooc, toooc, toooooc, ... t[oc]* t, to, tc, toc, tooc, tocc, toccooocc, ... Sempre tentado casar o maior nmero de vezes
O que casar [ar]*a na palavra arara ? (Expresses Regulares, Aurlio) 1.a 2.ara 3.arara 4.n.d.a [ar] zero vezes, seguido de a [ar] duas vezes, seguido de a [ar] quatro vezes, seguido de a
Mais: +
Indica uma ou mais ocorrncias do padro anterior to+c toc, tooc, toooc, toooooc, ... t[oc]+ to, tc, toc, tooc, tocc, toccooocc, ...
Expresses Regulares
Chaves: {...}
Permite que seja especificada um limite mnimo e/ou mximo de repeties para o padro anterior Possibilidades
{n,m} {n,} {n} {0,} {1,}
# ! "
Exemplos to{1,3}c toc, tooc, toooc to{2,}c tooc, toooc, tooooc, ... t[oc]{2,} tooc, toooc, tooooc, tco, toc, tcooocoo...
Expresses Regulares
Metacaracteres tipo ncora
Circunflexo: ^
& ( % $
Indica que o padro a seguir deve ser considerado a partir do incio da linha ^[a-z] linhas que comeam com letras minsculas ^[0-9] linhas que comeam por nmeros ^[^0-9] linhas que NO comeam por nmeros
Cifro: $
'
Indica que o padro anterior deve ser considerado no fim da linha toc$ linhas que terminam com a palavra toc [0-9]$ linhas que terminam com nmero [:-@]$ linhas que terminam com os caracteres :, ;, <, =, >, ?, e @
Combinaes teis
^$ ...$ ^.{15,30}$ linha em branco ltimos trs caracteres da linha linhas que contenham entre 15 e 30 caracteres
9
Expresses Regulares
Borda: \b
Indica a borda de uma palavra (incio ou fim) ana ana, anamaria, analucia, mariana, luciana \bana ana, anamaria, analucia ana\b ana, mariana, luciana \bana\b ana
+ *
Por palavra, deve-se entender seqncias de letras, nmeros e o caracter _ Deve ser utilizado antes de qualquer metacaracter para torn-lo um caracter normal sem qualquer efeito especial para a expresso regular
Literal: \
.
Ou alternativo: |
A lista funciona como um tipo de operador OU somente para uma letra Indica um padro com vrias alternativas Hello | Ola casa ou com a palavra Hello ou com Ola http://|https:// casa com http:// ou https://
1 0
10
Expresses Regulares
Grupo: (...)
Possibilita o agrupamento de caracteres que sero tratados atomicamente (oi!)+ oi!, oi!oi!, oi!oi!oi!, ... (\.[0-9]){3} .3.4.5, .7.2.4, ...
3 2
11
Expresses Regulares
e?grep [opes] PADRO [FILE ...]: retorna linhas dos arquivos especificados que casem com o padro de busca repassado
Comando muito popular no mundo GNU/Linux O egrep tem a capacidade de processar expresses regulares extendidas Opes
-i: torna a busca case-insensitive -x: retorna somente se o texto casar exatamente com o padro -r: busca recursiva a partir do diretrio indicado como parmetro -f: carrega modelos a partir do arquivo indicado, um por linha
5 8 4
Exemplos
$ $ $ $ $ grep ana agenda.txt grep -x ana agenda.txt egrep '^ana$' agenda.txt egrep 't[oc]*' agenda.txt egrep '(mari|luci)?ana$' agenda.txt
12