PROGRAMAÇÃO COM EXPRESSÕES REGULARES REGEX

Um guia rápido sobre expressão regular 

 Uma "expressão regular" (do inglês "regular expression", abreviação RegEx), serve para: extrair um pedaço de texto, substituir um texto, indentificar padrões em strings,  validar entradas de dados em formulários, localizar informações de textos, modificar formato de texto, remover caracteres inválidos. 

Obs.: a sintaxe da RegEx é case-sensitive, ou seja, reconhece texto em minusculo e em maiusculo, "abc" é diferente de "ABC".

 Um exemplo de uso, vamos verificar se um dado fornecido é um número decimal entre "0,00" a "9,99", para identificar use a expressão regular "\d,\d\d" - onde o símbolo "\d" é um curinga que reconhece números - essa expressão combina com "1,23" mas não combina com "123" pois falta a vírgula, nem combina com 1,2c pois "\d" não reconhece letra.

 Apresentaremos os métodos mais utilizados da classe Regex, seguida de práticas e validações úteis do dia-a-dia.

METACARACTERE:

 Um metacaractere é um símbolo com função especial nas expressões regulares. são categorizados conforme seu uso:

a) ÂNCORAS:


 Estabelece uma posição onde a expressão regular irá pesquisar um caracter. Posições: antes, depois ou entre os caracteres.

metacarac apelido significado
^ início de texto pesquisa se existe no início do texto, ou no início de uma linha com a flag 
\A início da string pesquisa somente no início do texto
$ fim de texto pesquisa no fim do texto, ou de uma linha com a flag ; não reconhece a quebra de linha \n no fim
\Z fim da string pesquisa somente no fim do texto
\b fronteira do caractere pesquisa na posição de borda, bem no início de uma palavra, ou logo depois do seu término; o mesmo que a posição entre \W e \w ou vice-versa
\B não fronteira do caractere

B) ESPECIFICADORES:
Especificam o conjunto de caracteres a pesquisar em uma posição.


metacaracapelidosignificado
.curingausando o ponto "." pode localizar qualquer tipo de caractere, não reconhece a quebra de linha \n
[...]conjuntoindica um conjunto de caracteres que serão pesquisados "[ ]", que podem conter no texto
[^...]conjunto negadoadicionando o "^" no conjunto, este indica o conjunto de caracteres que NÃO podem conter na pesquisa.
\ddígitopesquisa qualquer número; tem o mesmo resultado que usar o conjunto [0-9]
\Dnão-digítopesquisa número que não podem existir no texto; tem o mesmo resultado que usar o conjunto [^0-9]
\sbrancopesquisa espaço, quebra de linha, tabs etc.; em o mesmo resultado que usar [\t\n\r\f\v]
\Snão-brancopesquisa onde não for espaço ou quebra de linha; tem o mesmo resultado que usar [^\t\n\r\f\v]
\walfanuméricopesquisa qualquer letras e números; tem o mesmo resultado que usar [a-zA-Z0-9_]
\Wnão-alfapesquisa o que não for letra ou número; pode ser um complemento de \w
\escapea barra "\" anula a função de um metacaractere em seguida; por exemplo: se deseja pesquisar um ponto "." use "\." assim representa apenas um ponto, e não a função de curinga
\nnova linhapesquisa a quantidade de quebras de linha ou um texto no início de um parágrafo; \u000A
\ttabulaçãopesquisa a quantidade de avanços de parágrafo; \u0009

C) QUANTIFICADORES:
Define o número de repetições que uma expressão regular irá localizar:

metacaracsignificado
{n}apresentará exatamente "n" ocorrências, por exemplo: se deseja pesquisar por 3 aparições no texto use {3}
{n,m}pesquisa no mínimo "n" ocorrências e no máximo "m"
{n,}pesquisa no mínimo "n" ocorrências, sem limite máximo
{,n}pesquisa no máximo "n" ocorrências
?0 ou 1 ocorrência; pesquisa se não existe e pesquisa no máximo 1 ocorrência; tem o mesmo resultado que usar {,1}
+1 ou mais ocorrência; pesquisa apenas se existe no texto; tem o mesmo resultado que usar  {1,}
*0 ou mais ocorrência, qualquer quantidade
|o caractere pipe "|" usado com parênteses representa pesquisar uma ocorrência ou outra; "(z|f)ood" irá pesquisa por "zood" ou "food"

«q»?
modera qualquer um dos quantificadores acima (ver Gula × moderação)

POSIX: Para incluir acentos (letras acentuadas) devemos recorrer as classes POSIX, elas levam em conta a localidade do sistema.


metacaracsignificado
[:upper:]letras maiúsculas, resultado igual ao `[A-Z]`
[:lower:]letras minúsculas, resultado igual ao `[a-z]`
[:alpha:]maiúsculas e minúsculas, igual ao `[A-Za-z]`
[:alnum:]alfa numéricos, igual ao `[A-Za-z0-9]`
[:digit:]Números, resultado igual ao `[0-9]`

EXEMPLOS:
 Veja alguns exemplos com explicações:
Para pesquisar um CEP use \d{5}-\d{3}
O padrão de um CEP como 05432-001, possui 5 dígitos, um  hífen e mais 3 dígitos. O código "\d" é um metacaractere curinga que pesquisa um dígito entre 0 e 9. O código "{5}" é um quantificador que indica que o padrão escrito anterior deve ser repetido 5 vezes, portanto "\d{5}" é o mesmo que "\d\d\d\d\d" onde deve ter 5 números.
Para pesquisar a hora use [012]\d:[0-5]\d
Semelhante ao formato padrão de horas e minutos, como 03:10 ou 23:59. O código "[012]" define um conjunto, que indica o primeiro caractere deve ser 0, 1 ou 2. No segundo "[]" o hífen indica um conjunto de caracteres, onde "[0-5]" é uma forma abreviada para o conjunto (sequencia) "[012345]"; o metacaractere que representa todos os números "\d" ([0-9])
Para pesquisar a placa de automóvel use [A-Z]{3}-\d{4}
É o padrão de uma placa de automóvel no Brasil: com três letras de A a Z seguidas de um hífen, seguido de quatro dígitos, como CKD-4592.
























Para validar e-mail em formulário use ^\w*(\.\w*)?@\w*\.[a-z]+(\.[a-z]+)?$















































O metacaractere "^" indica o começo da frase. "\w*" pega qualquer caracteres alpha numericos (números ou letras, semelhante a [a-zA-Z0-9_]). O asterísco detecta qualquer quantidade/repetição desses caracteres, iniciando no 0 e indo até o infinito. A expressão (\.\w*)? significa: parenteses inicia um agrupamento. A expressão "\." detecta literamente um ponto ".". A expressão "\w*" indica qualquer quantidade de caracteres alpha numéricos. O ponto de interrogação "?" é quantitativo: determina que o que vier imediatamente antes dele deve aparecer 1 vez ou não. Nessa expressão ele aparece duas vezes. O arroba seria o arroba do email mesmo… \w* que aparece depois do arroba já falamos várias vezes logo acima. \.[a-z] pega um ponto seguido de letras minúsculas. vai detectar algo como .com, .net, etc… + significa que o que estiver imediatamente antes dele precisa aparecer 1 ou mais vezes no termo. (\.[a-z]+): abrimos novamente um agrupamento com o parenteses. \. pega o ponto. A classe [a-z] seleciona qualquer letra minúscula. E o mais aparece novamente, dizendo que tudo aquilo que estiver antes dele deve aparecer pelo menos 1 vez E a expressão $ pra finalizar significa final da string.

Para pesquisar tag html use <p[^>]*>























A expressão pega todas as tags de paragrafo "p" iniciais
Para pesquisar vogais use [aeiou]























A expressão pega as vogais, exemplo: "abcdefghijklmnopqrstuvwxyz".
Para pesquisar tag html use <p[^>]*>























A expressão pega todas as tags de paragrafo "p" iniciais





Comentários
0 Comentários

Postar um comentário