Atenção: esse artigo tem um vídeo complementar. Clique e assista!

De que se trata o artigo

O artigo apresenta as expressões regulares disponibilizadas pelo .NET Framework para a linguagem C#. São abordados os conceitos da utilização de expressões regulares para tratar validações e auxiliar no desenvolvimento de aplicações tanto desktop como web.


Em que situação o tema é útil

Com uma visão de aplicações web, as expressões regulares podem auxiliar muito em questão de segurança, pois ajudam a evitar SQL injection e também em validações de dados como CPF’s ou CNPJ.

Conheça as Expressões Regulares - Aprenda a validar informações na sua aplicação

A utilização de expressões regulares é muito importante no desenvolvimento de qualquer sistema, principalmente pela facilidade em se construir essas expressões. Essa facilidade pode não ser percebida em um primeiro momento, afinal, sua sintaxe é um pouco complexa. De qualquer forma, o que você desenvolveria com uma grande quantidade de código (se utiliza-se diretamente código C#), faria o mesmo com apenas uma linha (caso utiliza-se as expressões regulares.) Neste artigo, será mostrado como aplicar as expressões regulares em validações, extração de partes de textos de arquivos e implementações de segurança de entrada de dados em aplicações.

Trabalhar com arquivos de textos em uma aplicação pode representar uma tarefa trivial a qualquer desenvolvedor de software. A extração de partes de um texto ou até a remoção de caracteres especiais em campos de entradas de dados são tarefas facilmente realizadas nos dias de hoje, isso tudo com o auxílio de ferramentas e bibliotecas especializadas no assunto (que não fazem parte do contexto deste artigo). Mas, ainda demandam certo esforço, onde muitas vezes é criada uma quantidade considerável de código para que tudo funcione corretamente.

Há muito tempo desenvolvedores UNIX e Perl utilizam um sistema considerado um tanto complexo, porém muito eficiente para as tarefas citadas anteriormente: validação e tratamento de textos em uma aplicação. Este método complexo foi denominado como Expressões Regulares (Regular Expressions).

Nota do DevMan

PERL – Linguagem de programação multiplataforma utilizada em aplicações de missão crítica, destacando-se na utilização de aplicações web. O PERL nasceu e se desenvolveu no ambiente UNIX e é uma linguagem muito apreciada por administradores de sistema, pois possui muita versatilidade no processamento de textos e cadeias de strings, principalmente pela boa implementação de expressões regulares.

UNIX é um sistema operacional portável desenvolvido por um conjunto de programadores utilizando a linguagem Assembly. Em 1973 o Unix foi reescrito utilizando a linguagem C, a qual teria sido desenvolvida por um dos programadores do próprio Unix. Foi inicialmente distribuído ao longo dos anos 70 e 80. É um sistema operacional multitarefa e multiusuário, ou seja, possui a capacidade de executar de forma concorrente e independente várias aplicações pertencentes a dois ou mais usuários.

Em um primeiro momento, isto pode soar bem confuso ao leitor, mas, expressões regulares são comandos que validam formatos de textos. Expressões Regulares podem ser utilizadas para extrair partes de textos de um arquivo, sem a necessidade de estarmos lendo todas as linhas e comparando cada linha com a informação desejada, ou então podem ser utilizadas também para substituir instâncias de textos em arquivos ou ainda validar uma linha de dados com base em uma formatação desejada, por exemplo, validar a formatação de e-mail, dentre outras utilidades.

Manipulação de Exressões Regulares

O Microsoft .NET Framework oferece uma classe específica para a manipulação de expressões regulares, o qual possui compatibilidade com todas definições (que serão vistas no decorrer deste artigo) em Perl 5 e algumas adições específicas ao .NET. Esta classe está contida no namespace System.Text.RegularExpressions, denominada de Regex.

Para que possamos manipular expressões regulares, além de conhecermos a classe Regex, temos que entender o funcionamento da sua utilização. Inicialmente precisamos ter em mente que para validarmos uma expressão regular precisamos de duas coisas básicas: o texto a ser pesquisado (ou validado) e o padrão da expressão regular que irá realizar a verificação sobre este texto. Estas duas informações devem ser utilizadas na classe Regex para retornar o resultado que esperamos.

Vamos verificar os métodos disponibilizados na classe Regex e entendermos em que situação cada um pode nos auxiliar.

• IsMatch: O método IsMatch é utilizado para determinar a ocorrência do padrão definido por uma expressão regular no texto que está sendo verificado. Aqui também pode ser citado o exemplo da validação de e-mail, onde podemos definir um parâmetro em nossa expressão regular - que deva encontrar apenas uma instância do símbolo “@”. Através deste método, a classe Regex verificará se o texto a ser analisado é válido em comparação com o padrão definido pela expressão regular. Podemos afirmar que é, basicamente, uma comparação entre o texto e o padrão definido. Caso o padrão for válido, retornará verdadeiro (true), senão falso (false).

• Match e Matchs: Estes métodos retornam as instâncias do padrão da expressão regular encontrados no texto a ser analisado. O primeiro método retorna um objeto do tipo Match, o qual também esta contido no namespace System.Text.RegularExpression e contém detalhes sobre a primeira ocorrência encontrada do padrão no texto analisado, por exemplo, o próprio texto ou seu tamanho. O segundo método retorna uma coleção de objetos do tipo Match, a qual é do tipo MatchCollection. Nesta coleção estão incluídas todas as ocorrências para o padrão da expressão regular no texto analisado em objetos do tipo Match, conforme o retorno do primeiro método, onde contém todas as informações sobre a ocorrência. Um exemplo de utilização para o método Matches é a verificação de palavras duplicadas em sequência em um texto, onde o método retornaria qual palavra está duplicada e em qual posição (que é uma das propriedades do objeto Match).

• Replace: Este método já está praticamente com seu objetivo implícito em seu nome. Ele tem por objetivo substituir uma ocorrência, validada por uma expressão regular, por outro texto ou por um conjunto de caracteres definido pelo usuário. Um exemplo da utilização deste método é a retirada ou substituição de caracteres especiais em um texto, por exemplo, a substituição de ç por c para um contexto onde não sejam permitidos caracteres especiais.

Padrões de Expressões Regulares

Já conhecemos a classe e os métodos disponibilizados pelo .NET Framework para a manipulação de expressões regulares, agora podemos ver como são definidos os padrões destas expressões, os quais são responsáveis pela validação dos métodos estudados. Estes padrões são a parte mais complexa do estudo de expressões regulares.

...
Quer ler esse conteúdo completo? Tenha acesso completo