Sítios Web II [SW2]

<EXTRA> Expressões regulares

ProfºEduardo Pezutti

http://maverick.td.utfpr.edu.br/slides/sw2 link

Expressões regulares

Idéia básica

Uma expressão regular é uma notação para representar padrões em strings. Serve para validar entradas de dados ou fazer busca e extração de informações em textos.

Por exemplo, para verificar se um dado fornecido é um número de 0,00 a 9,99 pode-se usar a expressão regular \d,\d\d, pois o símbolo \d é um curinga que casa com um dígito.

Dizemos que a expressão \d,\d\d casa com 1,23 mas não casa com 123 (falta a vírgula) nem com 1,2c (“c” não casa com \d, porque não é um dígito).

Alguns exemplos

\d{5}-\d{3}
O padrão de um CEP como 05432-001: 5 dígitos, um - (hífen) e mais 3 dígitos. A sequência \d é um metacaractereque casa com um dígito (0 a 9). A sequência {5} é um quantificador: indica que o padrão precedente deve ser repetido 5 vezes.
[012]\d:[0-5]\d
Semelhante ao formato de horas e minutos, como 03:10 ou 23:59. A sequência entre colchetes [012] define um conjunto. Neste caso, o conjunto especifica que primeiro caractere deve ser 0, 1 ou 2. Dentro dos [] o hífen indica uma faixa de caracteres, ou seja, [0-5] é uma forma abreviada para o conjunto [012345]; o conjunto que representa todos os dígitos, [0-9] é o mesmo que \d. Note que esta expressão regular também aceita o texto 29:00.
[A-Z]{3}-\d{4}
É o padrão de uma placa de automóvel no Brasil: três letras de A a Z é seguidas de um - (hífen) seguido de quatro dígitos, como CKD-4592.
meta nome significado
. curinga qualquer caractere, exceto a quebra de linha \n
[...] conjunto qualquer caractere incluido no conjunto
[^...] conjunto negado qualquer caractere não incluido no conjunto
\d dígito o mesmo que [0-9]
\D não-digíto o mesmo que [^0-9]
\s branco espaço, quebra de linha, tabs etc.; o mesmo que [ \t\n\r\f\v]
\S não-branco o mesmo que [^ \t\n\r\f\v]
\w alfanumérico o mesmo que [a-zA-Z0-9_]
\W não-alfanumérico o complemento de \w
\ escape anula o significado especial do metacaractere seguinte; por exemplo, \. representa apenas um ponto, e não o curinga
meta significado
{n} exatamente n ocorrências
{n,m} no mínimo n ocorrências e no máximo m
{n,} no mínimo n ocorrências
{,n} no máximo n ocorrências
? 0 ou 1 ocorrência; o mesmo que {,1}
+ 1 ou mais ocorrência; o mesmo que {1,}
* 0 ou mais ocorrência
«q»? modera qualquer um dos quantificadores acima

Definem ou grupos ou alternativas.

meta significado
(...) define um grupo, para efeito de aplicação de quantificador, alternativa ou de posterir extração ou re-uso
...|... alternativa; casa a regex à direita ou à esquerda
\«n» recupera o texto casado no n-ésimo grupo

Resumão
Exemplo

RegExp no JavaScprit

test()
exec()

Também pode ser usado com:

search()
replace()
Site para teste online de RegExp

test()


var pacode = /e/;
pacode.test("The best things in life are free!");
// ou
/e/.test("The best things in life are free!");
// TRUE

exec()


var pacode = /e/;
pacode.exec("The best things in life are free!");
// ou
/e/.exec("The best things in life are free!");
// e

HORA DA "MÃO NA MASSA"!

Fazer

Testar os métodos de strings

Fazer as expressões regulares a baixo

CPF com ou sem pontuação

A expressão regular \d{3}\.\d{3}\.\d{3}\-\d{2} casa um CPF como 772.843.809-34. Inclua quantificadores para que a pontuação seja opcional.

A regex resultante deve casar com 77284380934.

Achar

Escreva uma regexp capaz de encontrar no texto deste parágrafo todas as palavras que terminam com a letra "o".

Escreva uma regexp capas de encontrar no parágrafo acima todas as palavras que começam e terminam com vogais.

Hora em RegExp

Foi apresentada a expressão regular [012]\d:[0-5]\d para validar horas e minutos no formato HH:MM. Porém esta regexp aceita o texto 25:00 que não é uma hora válida. Modifique a regex para corrigir esta falha.

Endereços IPv4

Endereços IPv4 são formados por 4 octetos separados por :, e cada octeto é um número entre 0 e 255, por exemplo: 192.169.1.1. Note que 256 não é um octeto válido, mas 156 é.

Validar endereços IP completos como 192.169.1.1 e 255.0.0.0.

Inverter números

Escreva uma função que inverta uma sequência de números.
x = 32243;
Saída: 34223

Palindromo

Crie uma função para verificar se a frase é um palíndromo ou não.

Ex: A Rua Laura
A base do teto desaba
A cara rajada da jararaca

Conjunto

Escreva uma função para obter todos subconjunto possível com um comprimento fixo (por exemplo, 2) das combinações de um vetor.
Exemplo de vetor: [1, 2, 3] e comprimento subconjunto é 2
Saída Esperado: [[1, 2], [1, 3], [2, 1], [2, 3], [3, 1], [3, 2]]

ProfºEduardo Pezutti

epsantos@utfpr.edu.br link