O que são expressões regulares?

Saudações meu queridos! Aqui estou eu novamente com mais uma coluna, e neste artigo vamos tratar de assunto muito interessante e de suma importância que facilita a vida do desenvolvedor, seja de PHP, ASP. NET, Java, C, Perl, VB etc. Então vamos lá?

Por Programação Pular para comentários
O que são expressões regulares?

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!

Compartilhe com seus amigos:
Maurilio Vilela
Maurilio Vilela Web Designer e Master, Programador, estudante de Licenciatura em Informática, pelo Instituto de Educação, Ciência e Tecnologia do Maranhão - IFMA, residente na cidade de Campestre do Maranhão MA. Trabalha com web desde 2009, programa em PHP, C, JSP, MySQL, ASP, Javascript, jQuery, buscando conhecer sempre novas tecnologias e estar sempre atualizado.
FACEBOOK // TWITTER: @mauriliovilela
Quer conversar com o(a) Maurilio, comente:
Carregar comentários
Últimas notícias de Programação
  • Google usa Mulher-Maravilha para ajudar meninas a programar

    Google usa Mulher-Maravilha para ajudar meninas a programar

    Meninas ganham um incentivo extra na hora de aprender a programar, a Mulher-Maravilha.

  • Criando um cadastro de usuário em Java

    Criando um cadastro de usuário em Java

    O objetivo deste artigo é desenvolver uma aplicação em JSE (Java Standard Edition) de inserção de dados utilizando alguns padrões de projeto.

  • Quer aprender PHP? Saiba mais

    Quer aprender PHP? Saiba mais

    Chegou o tão aguardado curso online de PHP do Oficina da Net. Você não pode perder. PHP é uma das linguagens mais usadas no mundo. Os conteúdos que vou mostrar no curso, são exatamente o que você precisa saber para iniciar sua carreira como programador.

  • Formulário de contato em php

    Formulário de contato em php

    Guia do PHP: Aprenda a fazer um formulário em PHP que envia via SMTP autenticado o e-mail para um destinatário.

  • Como fazer um GIF?

    Como fazer um GIF?

    Aprenda a criar um GIF animado de vídeos. Descubra como criar os GIFs, imagens animadas que você vê em na internet.

  • O que priorizar na hora de escolher o hosting para seu site?

    O que priorizar na hora de escolher o hosting para seu site?

    Com o crescimento das ofertas na web, saiba o que você deve levar em consideração na hora de escolher a melhor empresa de hosting para seu empreendimento

  • O que preciso fazer para criar um aplicativo?

    O que preciso fazer para criar um aplicativo?

    Temos visto que desenvolver aplicativos que visam o mercado mobile pode ser mais que uma alternativa rentável, pode colocá-lo no topo, deixá-lo rico. Mas nem tudo são flores, e o aspirante a desenvolvedor de app precisa seguir algumas regras.

  • WEBINAR 3.9

    WEBINAR 3.9

    Venha para o Maker e descubra como tornar o seu negócio mais competitivo.