Uma Expressão Regular, conhecidas por REGEX, é um método formal de se especificar um padrão de texto.
É uma composição de símbolos, caracteres com funções especiais, chamados “metacaracteres” que, agrupados formam uma sequencia, ou expressão regular
Uma expressão regular é testada em textos e retorna sucesso caso este texto obedeça exatamente a todas as suas condições. Neste caso dizemos que o texto “casa” com (match) a expressão regular.
As REGEXs servem para se dizer algo abrangente de forma mais rigorosa. Definido o padrão, tem-se uma lista (finita ou não) de possibilidades de casamento.
Exemplo: [rgp]ato pode casar com “rato”, “gato” e “pato” Mas não "mato"
Utilidade das Expressões Regulares e a busca de padrões em textos
Vários Linguagens de Programação, editores de texto têm suporte às REGEXs.
Para exemplificar o uso das REGEX em R , usaremos as funções grep, gsub
cores <- colors()
grep("blue",cores)
Retorna o índice de todos os elementos do vetor cores que possuem "blue"
Circunflexo ^ - Simboliza o início de uma linha
xxxxxxxxxx
grep("^blue",cores)
Retorna o índice de todos os elementos do vetor cores começados por "blue"
Cifrão $ - Simboliza o fim de uma linha
xxxxxxxxxx
grep("yellow$",cores,value=T)
Retorna o índice de todos os elementos do vetor cores terminados por "yellow"
xxxxxxxxxx
grep("^[aeiou]",cores,value=T)
cores começadas por vogais
xxxxxxxxxx
grep("[0-9]$",cores,value=T)
cores terminadas por numeros
xxxxxxxxxx
grep("grey..",cores,value=T)
cor cinza seguida por dois caracteres qualquer
xxxxxxxxxx
grep("^....$",cores,value=T)
cores com apenas 4 caracteres
Chaves {} - Simboliza a quantidade de repetições do caractere anterior
grep("e{2}",cores,value=T) padrão onde cores tem dois "e" seguidos
grep("[0-9]{3,5}",cores ,value=T) onde cores tem de 3 a 5 numeros
Curinga * - Simboliza “qualquer coisa”, inclusive nada.
xxxxxxxxxx
grep("^[s].*[0-9]$",cores,value=T)
cores começadas por "s" e terminadas por numero!
Operador logico OU (OR) '|'
Para fazer um OU lógico, onde buscamos uma coisa OU outra, deve-se usar o | e delimitar as opções entre parênteses:
xxxxxxxxxx
grep("^[w]|^[y]",cores,value=T)
Não deve conter espaços! Nesse exemplo é o mesmo que
xxxxxxxxxx
"^[wy]"
Pesquisa para retornar as cores que não começam por vogais
xxxxxxxxxx
grep ("^[bcdfghjklmnpqrstvwxyz]",cores)
Ou usar negativa (NOT) usando “^”
xxxxxxxxxx
grep ("^[^aeiou]", cores,value=T)
repare que o não é o ^ que está dentro das chaves!
Intervalo de Lista [-] - Busca por faixa de caracteres ou números
grep ("[0-9]{3,}", cores,value=T)
Busca por números de três dígitos ou mais
xxxxxxxxxx
grep("[r-z]$",cores,value=T)
Busca por cores terminadas com letras entre r e z
A função gsub faz substituições em strings usando REGEX
xxxxxxxxxx
teste <- " caracteres em branco, no incio e final "
gsub("^\\s+|\\s+$", "", teste)
Existem varias funções que podem usar REGEX, o R utiliza dialeto de REGEX aprenda um pouco mais nessa Vignette