ProfºEduardo Pezutti
http://maverick.td.utfpr.edu.br/slides/sw2 linkUma 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).
\d{5}-\d{3}
-
(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
[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}
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 |
test()
exec()
Também pode ser usado com:
search()
replace()
var pacode = /e/;
pacode.test("The best things in life are free!");
// ou
/e/.test("The best things in life are free!");
// TRUE
var pacode = /e/;
pacode.exec("The best things in life are free!");
// ou
/e/.exec("The best things in life are free!");
// e
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.
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.
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 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.
Escreva uma função que inverta uma sequência de números.
x = 32243;
Saída: 34223
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
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