Uma expressão regular, na Informática, define um padrão a ser usado para procurar ou substituir palavras ou grupos de palavras. É um meio preciso de se fazer buscas de determinadas porções de texto.
Por exemplo, se o conjunto de palavras for {asa, carro, jardim, ovos, terra} e a expressão regular buscar por um padrão rr, obterá as palavras carro e terra.
Existem diferentes formatos para definir-se expressões regulares, porém com algumas noções gerais é possível entender boa parte das expressões. Fonte: Wikipédia – Expressão Regular
Expressões Regulares. Um assunto que muitos torcem o nariz ao ouvir falar, mas que sempre acaba aparecendo na resolução dos mais diversos problemas. Para quem não conhece ou não domina o assunto, é difícil perceber a utilidade de saber escrever todos aqueles símbolos estranhos. Mas à medida que vai se aprendendo, aplicando, tudo começa a clarear.
Expressões Regulares é uma forma avançada de mexer com strings. Ela permite que você crie condições para que um trecho seja encontrado, substituído ou uma string separada em uma array. Você pode decidir substituir um BBCode em tags HTML, mas não antes de verificar se os dados dessa BBCode correspondem ao que você deseja, por exemplo. Exemplificando mais ainda, você pode verificar se o texto contido em uma BBCode img é uma URL apontando para uma imagem, por exemplo. Você pode definir para caso o usuário poste mais de 3 pontos de exclamação, então esses pontos de exclamação são retirados até ter somente 3. Como se pode perceber, a utilidade do RegExp é apenas limitada pela sua imaginação.
As ERs são úteis para buscar ou validar textos variáveis como:
- data
- horário
- número IP
- endereço de e-mail
- endereço de Internet (url)
- declaração de uma função()
- dados na coluna N de um texto
- dados que estão entre tags /tags
- número de telefone, RG, CPF, cartão de crédito
Como funcionam?
OS METACARACTERES
Para saber como funcionam as Expressões Regulares precisamos primeiro conhecer os metacaracteres. Cada metacaractere é uma ferramenta que tem uma função específica. Eles servem para dar mais poder às pesquisas, formando padrões e posições impossíveis de se especificar usando somente caracteres normais.
Os metacaracteres são pequenos pedacinhos simples que agrupados entre si, ou com caracteres normais, formam algo maior, uma expressão. O importante é compreender bem cada um individualmente, e depois apenas lê−los em seqüência.
Para matar a curiosidade, aqui está os tão falados metacaracteres: . ? * + ^ $ | [ ] { } ( ) . Temos que nos acostumar com estes símbolos e seus respectivos nomes, então vai uma tabela com a meta e o mnemônico (nome).
meta mnemônico
------------------------------
. ponto
[] lista
[^] lista negada
? opcional
* asterisco
+ mais
{} chaves
^ circunflexo
$ cifrão
b borda
escape
| ou
() grupo
1 retrovisor
Agora que sabemos como chamar nossos amigos novos, veremos uma prévia, um apanhado geral de todos os metacaracteres e suas funções. Eles estão divididos em quatro grupos distintos, de acordo com características comuns entre eles.
REPRESENTANTES
meta mnemônico função
------------------------------------------------------
. ponto um caractere qualquer
[...] lista lista de caracteres permitidos
[^...] lista negada lista de caracteres proibidos
QUANTIFICADORES
meta mnemônico função
---------------------------------------------------------------
? opcional zero ou um
* asterisco zero, um ou mais
+ mais um ou mais
{n,m} chaves de n até m
ÂNCORAS
meta mnemônico função
------------------------------------------------------
^ circunflexo início da linha
$ cifrão fim da linha
b borda início ou fim de palavra
OUTROS
meta mnemônico função
------------------------------------------------------
c escape torna literal o caractere c
| ou ou um ou outro
(...) grupo delimita um grupo
1...9 retrovisor texto casado nos grupos 1...9
Como utilizar as expressões regulares?
A estrutura de uma ER pode ser assim:
'/regularexp/'
Note que regularexp é onde você deve inserir a expressão regular em si. Um detalhe importante é que caso você utilize barras dentro da ER você vai precisar colocar uma barra invertida já que trata-se de metacaractere, bom, vamos ver um exemplo pra melhor entendimento.
$pattern = '/http://profissionais.ws/';
$result = "";
preg_match($pattern, $subject, $result);
echo "";
print_r($result);
echo "
";
No exemplo acima eu tenho uma string com o domínio profissionais web, e uma string com a ER, note que utilizei uma barra invertida sempre que uma barra ou ponto apareceu na ER, isso foi feito porque esses são metacaracteres especiais e caso eu não tivesse colocado a barra invertida, eles seriam interpretados por suas funções dentro da ER e não como strings.
É interessante dizer também que você pode utilizar o sinal % invés das barras // para montar a ER, ficaria algo desse tipo:
$pattern = '%http://profissionais.ws%';
A vantagem nisso é que daí você não vai precisar colocar uma barra invertida em toda barra que apareça na ER, em contrapartida você terá que colocar uma barra invertida antes de cada sinal de percentagem que aparecer na ER. Então é uma questão matemática, caso a barra apareça mais vezes que o sinal de percentagem na ER você poderia utilizar ‘%regexp%’ já que pouparia tempo, caso contrário utilize a outra forma ‘/regexp/’.
Algumas dicas sobre ER:
1- Como casar nova linha (quebra de linha) em expressões regulares?
- Você pode utilizar essas duas idéias:
1) '/n/' - casa uma quebra de linha
2) '/.*/s' - Colocar o s depois da última barra fará com que
o ponto (.) case qualquer caractere, inclusive new line.
2- Como tornar uma Expressão Regular Case Insensitive (Não diferencia maiúsculas de minúsculas)?
- Veja como:
'/regexp/i' - Colocando o i após a última barra irá tornar
a ER case insensitive.
3- Como casar início e final de linha em uma expressão regular?
- Veja como:
'/^regexp$/m' - Colocar o m após a última barra faz
com que a ER considere as âncoras ^ e $ para inicio
e final de linhas
Além disso, temos também o modificador /x, quando utilizado, os espaços entre os caracteres não especiais não serão considerados. Você também pode unir modificadores para satisfazer seu anseio, dessa forma:
'/regexp/simx'
Espero que este texto tenha sido útil para você e que consiga tirar proveito de ER, qualquer dúvida podem estar comentando que tirarei todas as dúvidas, deixo aqui aquele forte abraço e até a próxima!
😕 Poxa, o que podemos melhorar?
😃 Boa, seu feedback foi enviado!
✋ Você já nos enviou um feedback para este texto.