Escolar Documentos
Profissional Documentos
Cultura Documentos
(e)xpr\1s{2}\1s r\1gular\1s
Cronograma
Introduo Terminologia Primeiro Exemplo Metacaracteres
Representantes Quantificadores Ancoras Outros Modernos
Introduo
1943 estudo que teorizava o funcionamento dos nossos neurnios Stephen Cole Kleene descrio da teoria dos autmatos lgebra de conjunto regulares Regexp Identificar cadeias de caracteres atravs de um mtodo formal de identificao de texto Escritas em linguagem formal So interpretadas Assunto pouco estudado
Introduo
Mo na roda para tratamento de strings
Procurar e substituir textos Validar determinadas strings Filtragem de informao
Introduo
Uma maneira de procurar um texto que voc no lembra exatamente como , mas tem 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.
Terminologia
ER
Regexp Regex Expreg
Terminologia
Casar
Bater Conferir Encaixar Igualar
Padro
Palavras Linha vazia Numero
Robozinho
Compilador Interpretador
Terminologia
Dizer algo abrangente de forma especfica Exemplo
[rgp]ato
Casa com rato, gato e pato
Buscar padres
Email Data Telefone Cpf
Primeiro Exemplo
Como fazer para buscar os usurios que acessaram o sistema apenas no perodo da tarde
^1[2-8]
Metacaracteres
Representantes
Representar um ou mais caracteres Associao entre elementos como links, apelidos Casam com a posio de um nico caractere
Ponto . (necessitado)
Coringa solitrio Procura um casamento no importa com quem seja Exemplo /fala./
"Olha, com vocs me pressionando a fala no vai sair natural. Eu no consigo me concentrar na minha fala. Alis, isso um falatrio, pois nunca vi um comercial com tantas falas assim. Vou me queixar com o problemasnafala@ medicos.com.br
Resumo
O ponto casa com qualquer coisa. O ponto casa com o ponto. O ponto um curinga para casar um caractere.
Lista [] (a exigente)
Sabe com quem quer casar. Ela s casa com quem ela conhece n[a]o Dentro da lista todo mundo normal Faa uma lista que s aceite nmeros Faa uma lista da hora
Lista [] (a exigente)
Intervalo representado por - [0123456789] igual a [0-9] Alguns intervalos (Tabela ASCII)
a-z A-Z 5-9 a-f :-@ = : ; < = > ? @
Lista [] (a exigente)
Caracteres acentuados POSIX Leva em conta a localidade do sistema (Exemplo)
Lista [] (a exigente)
Resumo
A lista casa com quem ela conhece e tem suas prprias regras. Dentro da lista, todo mundo normal. Dentro da lista, trao indica intervalo. Um - literal deve ser o ltimo item da lista. Um ] literal deve ser o primeiro item da lista. Os intervalos respeitam a tabela ASCII (no use A-z). [:classes POSIX:] incluem acentuao, A-Z no.
Resumo
Uma lista negada segue todas as regras de uma lista normal. Um ^ literal no deve ser o primeiro item da lista. [:classes POSIX:] podem ser negadas. A lista negada sempre deve casar algo.
Quantificadores
Serve para determinar o nmero de repeties do caractere anterior Quantas vezes o tomo anterior pode aparecer Quantificadores
No so quantificveis So gulosos
Opcional: o irrelevante ?
Pode haver ou no a ocorrncia da entidade Repete 0 ou 1 vez /7?/ a ocorrncia de 7 ou no Cada caractere forma um tomo Resumo
O opcional opcional. O opcional til para procurar palavras no singular e plural. Podemos tornar opcionais caracteres e metacaracteres.
Exemplo
/fala[r!]?/
um f seguido de um a, seguido de um l, seguido de um a, seguido de: ou r, ou !, ambos opcionais
Resumo
Leia a ER tomo por tomo, da esquerda para a direita. Leia a ER, entenda o todo e analise as possibilidades.
Asterisco: o tanto-faz *
Pode haver ou no a entidade vrias vezes Entidade anterior pode aparecer em vrias quantidades, ou no. /Bi*p/ /b[ip]*/ Ganancioso
/a[ra]/ 1) a [ar] zero vezes, seguido de a 2) ara [ar] duas vezes (a,r), seguido de a 3) arara [ar] quatro vezes (a,r,a,r), seguido de a 4) n.d.a.
Asterisco: o tanto-faz *
Metacaracteres extremamente abrangentes . e *. Se combinarmos os dois poderemos falar qualquer coisa Resumo
O asterisco repete em qualquer quantidade. Quantificadores so gulosos. O coringa .* o tudo e o nada, qualquer coisa.
Mais: o tem-que-ter +
Funcionamento idntico ao asterisco Diferena
Pelo menos um
ncoras
Marcam uma posio especfica da linha Quantificadores no tem influncia sobre eles
Circunflexo: o incio ^
Marca o comeo da linha ^[0-9] a partir do comeo da linha case um nmero
Resumo
Circunflexo um nome chato, porm chapeuzinho legal. Serve para procurar palavras no comeo da linha. S especial no comeo da ER.
Cifro: o fim $
Marca o fim da linha e s valido no final /^$/ linha vazia O que esta expresso faz /^.{20,60}$/ Resumo
Serve para procurar palavras no fim da linha. S especial no final da ER. cifro e no dlar.
Borda: a limtrofe \b
A borda de uma palavra Marca os limites de uma palavra onde ela comea e onde termina Termina tudo que difere [A-Za-z0-9_] Exemplo
\bdia dia\b \bdia\b
Resumo
A borda marca os limites de uma palavra O conceito "palavra" engloba letras, nmeros e o sublinhado A borda til para casar palavras exatas e no parciais
Outros
Funo especfica e no relacionadas entre si
Escape: a criptonita \
Caso precise de um caractere que meta mas voc deseja seu valor literal \., \[ , \], \?, \+ , \{, \}, \^ e \$ \\ escapa a si prprio Expresso regular para casar com rg no formato
n.nnn.nnn-n
[0-9]\.[0-9]{3}\.[0-9]{3}-[0-9]
Resumo
O escape escapa um metacaractere, tirando seu poder. \* = [*] = asterisco literal. O escape escapa o escape, escapando-se a si prprio simultaneamente.
Ou: o alternativo |
Ou isso ou aquilo
/boa-tarde|boa-noite/ http://|ftp://
Resumo
O ou indica alternativas. Lista para um caractere, ou para vrios. O grupo multiplica o poder do ou.
Resumo
O retrovisor s funciona se usado com o grupo. O retrovisor serve para procurar palavras repetidas. Numeram-se retrovisores contando os grupos da esquerda para a direita. Temos no mximo 9 retrovisores por ER.
Quantificadores gulosos
Casam o mximo possvel Exemplo
Um <b> negrito</b> aqui.
Quantificadores no gulosos
O menor casamento Presente apenas nas linguagens mais recentes Acrescentar ? logo aps o quantificador Quantificador tmido
Metacaracteres modernos
Case esta ER somente se seguida de tal coisa. Case esta ER somente se no precedida de tal coisa. O "tal coisa" pode ser uma ER mais complicada que a original. Grupos nomeveis que geram pseudovariveis (veja Python). Grupos que no so acessveis por retrovisores. Case isso somente se o grupo anterior tambm casou. Estrutura de "if-then-else" dentro de ERs. A "configurao" de apenas partes da ER. Execuo de trechos de linguagem de programao no meio de ERs.
Metacaracteres modernosos
Estrutura
(?<identificador><contedo>) Identificador o tipo de metacaractere Contedo o que ser manipulado por este caractere
Metacaractere texto normal cdigos de linguagem externa
Comentrio (?#texto)
Ignorado pelo rob de busca (?# O nome) luiz (?# Sobre nome) loja
Grupos (?:ER)
Grupos () Inacessveis por retrovisores Grupo fantasma ^(Homer) (?:J\.) (Simpson) \1 = Homer e \2 = Simpson
Verificador (?=ER)
Verifica a prxima expresso se casar retorna verdadeira Homer (?=Simpson)
S casar homer se for seguido de simpson Entretanto o sobrenome no far parte do trecho casado :D. S serviu para checagem
Verificador (?!ER)
Contrrio da anterior verifica a prxima expresso se no casar retorna verdadeira Homer (?!Simpson)
S casar homer se no for seguido de simpson
Verificador (?<=ER)
Verifica a expresso anterior casa ento retorna verdadeira (?<=Simpson) Homer
S casar homer se for precedido de simpson
Verificador (?<!ER)
Contrrio da anterior verifica expresso anterior no casa ento retorna verdadeira (?<!Simpson) Homer
S casar homer se no for precedido de simpson
(?modificador)
Configurar uma parte da ER i: ignorar a diferena entre maisculas e minsculas; m: trata o texto como multilinha; s: trata o texto como uma nica linha; x: permite incluso de espaos e comentrios; L: levar em conta a localizao do sistema (somente Python).
(?(condio)ER-sim|ER-no)
If-then-else A condio um nmero que referncia um grupo Usado geralmente para verificao de elementos que abrem e devem ser fechados Verificao de parnteses
(\()?[0-9]+(?(1)\))
(?{cdigo})
S funciona para Perl
Use o circunflexo
Poupa tempo
Evite o coringa .*