Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação para Servidores Aula 24 Sumário • Expressões regulares (con=nuação...); 2 Expressões Regulares • Expressões Regulares -‐ Guia de Consulta Rápida – por Aurelio Marinho Jargas e Editora Novatec, ©2001 – hNp://aurelio.net/regex/guia/ 3 Expressões Regulares • Metacaracteres representantes / significado: . (ponto) -‐ um caractere qualquer [...] (lista) -‐ lista de caracteres permi=dos [^...] (lista negada) -‐ lista de caracteres proibidos • Metacaracteres quan=ficadopres / significado: ? (opcional) -‐ zero ou um * (asterisco) -‐ zero, um ou mais + (mais) -‐ um ou mais {n, m} (chaves) -‐ de n até m 4 Exercícios – Aula 23 • Respostas: 1. A palavra “frase” no singular e no plural; frases? 2. A palavra “letra” podendo conter qualquer combinação de letras maiúsculas e minúsculas; [lL][eE][tT][rR][aA] 3. Números inteiros; \-?[0-9]+ 4. Hora de 00:00 a 23:59; [0-2][0-9]:[0-5][0-9] 5 Expressões Regulares • Metacaracteres âncoras / significado: ^ (circunflexo) -‐ início da linha $ (cifrão) -‐ final da linha \b (borda) -‐ início ou fim de palavra • Outros metacaracteres / significado: \ (escape) -‐ torna literal o caractere à sua direita | (ou) -‐ um ou outro (...) (grupo) -‐ delimita um grupo \1...\9 (retrovisor) -‐ texto casado nos grupos 1...9 • Não confundir os curingas da linha de comando com metacaracteres de expressão regular! 6 Expressões Regulares • Classe POSIX: [:upper:] letras maiúsculas; [:lower:] letras minúsculas; [:alpha:] letras maiúsculas e minúsculas; [:alnum:] letras e números; [:digit:] números; [:xdigit:] números hexadecimais; [:punct:] sinais de pontuação; [:blank:] espaço e tabulação; [:space:] caracteres brancos (\t\n\r\f\v); [:cntrl:] caracteres de controle; 7 Expressões Regulares • Classe POSIX (con=nuação): [:graph:] caracteres imprimíveis; [:print:] caracteres imprimíveis e o espaço; – Observações: • Os colchetes fazem parte da classe, assim [[:upper:]] é uma classe POSIX dentro de uma lista; • As classes POSIX levam em conta a localidade. Assim, no Brasil [:upper:] engloba: ABCDEFGHIJKLMNOPQRSTUVWXYZÇÁÀÂÃÉÈÊÕÍÌÎÓÔÒÕÚÛÙ... 8 Expressões Regulares • Metacaracteres =po âncora: – Marcam uma posição específica na linha; ^ indica que o casamento deve ocorrer no início da linha; $ indica que o casamento deverá ocorrer no final da linha; \b indica uma borda, ou seja, o limite de uma palavra; – Exemplos: ^[0-9] a linha deve ser iniciada com um número; ^[^0-9] a linha não pode se iniciar com número; [0-9]$ a linha deverá terminar com um número; 9 Expressões Regulares • Metacaracteres =po âncora (con=nuação...): – Outros exemplos: ^$ linha vazia; .....$ 5 úl=mos caracteres de uma linha; ^.{15-80}$ linhas com 15 a 80 caracteres; \bdia dia, diafragma, bom-‐dia!, ... dia\b dia, melodia, bom-‐dia!, ... \bdia\b dia, bom-‐dia!, ... 10 Expressões Regulares • Outros metacaracteres: \ funciona como um caractere de escape. Ele serve para que metacaracteres tenham significado literal. Assim, \. significa o caractere ponto, não o metacaractere ponto; • Por exemplo, para representar um número de CPF com formato nnn.nnn.nnn-‐nn pode-‐se u=lizar a expressão: [0-9]{3}\.[0-9]{3}\.[0-9]{3}-[0-9]{2} | funciona como um OU, de forma que possamos listar mais de uma opção. Exemplo: boa-tarde|boa-noite procura pela ocorrência de “boa-‐tarde” ou de “boa-‐noite”; 11 Expressões Regulares • Outros metacaracteres (con=nuação...): – Podemos juntar vários caracteres ou metacaracteres entre parênteses para formar um grupo. Exemplos: (ha!)+ ha!, ha!ha!, ha!ha!ha!, ... (\.[0-9]){3} .0.6.2, .2.8.9, .6.6.6, ... boa-(tarde|noite) boa-‐tarde, boa-‐noite (#|n\.|núm) 6 # 6, n. 6, núm 6 (in|con)?certo incerto, concerto, certo 12 Expressões Regulares • Outros metacaracteres (con=nuação...): \1...\9 são chamados de retrovisores, pois buscam um trecho que já tenha casado com um grupo para reu=lizá-‐lo. Por exemplo, (quero)-\1 casa com quero-‐quero; De forma mais ampla, ([A-Za-z]+)-\1 casa com qualquer palavra repe=da separada por traço. – Outros exemplos: (lenta)(mente) é \2 \1 lentamente é mente lenta ((band)eira)nte \1 \2a bandeirante bandeira banda in(d)ol(or) é sem \1\2 indolor é sem dor ((((a)b)c)d)-1 = \1,\2,\3,\4 abcd-‐1 = abcd,abc,ab,a 13 Expressões Regulares • Recursos avançados: (?=EXPR) realiza uma busca adiante (look ahead) pelo casamento da expressão EXPR. – Exemplo: realizando a verificação de validação de uma senha que deve ter no mínimo: • Uma letra minúscula; • Uma letra maiúscula; e • Um número; ^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{8,16}$ 14 Exercícios • Usando os metacaracteres âncora, escrever expressões regulares para casar com: 1. A palavra “frase” no singular e no plural; 2. A palavra “letra” podendo conter qualquer combinação de letras maiúsculas e minúsculas; 3. Números inteiros; 4. Hora de 00:00 a 23:59 (somentehoras válidas); 5. Um endereço IP (válido); 6. Um endereço de e-‐mail no formato abaixo: quaisquerLetras@quaisquerLetras.xxx , onde xxx é um dos domínios: .com OU .edu OU .org; 15 Exercícios • Respostas: 1. A palavra “frase” no singular e no plural; frases? 2. A palavra “letra” podendo conter qualquer combinação de letras maiúsculas e minúsculas; [lL][eE][tT][rR][aA] 3. Números inteiros; \-?[0-9]+ 4. Hora de 00:00 a 23:59; [0-2][0-9]:[0-5][0-9] 16
Compartilhar