Você está na página 1de 5

.NET - Usando Expressões Regulares - I http://www.macoratti.net/17/03/net_regex1.

htm

  .NET - Usando Expressões Regulares - I

Hoje vamos rever alguns conceitos


sobre expressões regulares usando
dois exemplos práticos.

Eu já escrevi diversos artigos sobre o recurso as expressões regulares. Para saber mais leia os artigos:

A plataforma .NET e as Expressões Regulares - Macoratti.net


VB - Usando Expressões Regulares - Macoratti.net
NET - Ferramentas de Produtividade : Expresso - Macoratti.net

Neste artigo vou mostrar uma aplicação prática usando expressões regulares.

1. Encontrando palavras em um bloco de texto/Arquivo - Encontra palavras isoladas em um bloco de texto. A


expressão irá encontrar apenas palavras completas cercadas por espaços ou outros delimitadores de palavras,
como pontuação ou início ou fim de uma linha.

Para o exemplo deste artigo eu vou criar uma aplicação Console Application, mas fique a vontade para aplicar o
código a outros tipos de projetos.

Recursos usados:

Visual Studio Community 2017

Criando a solução no VS 2017


Abra o VS 2017 e no menu File clique em New Project;

Selecione a linguagem C# e o template Console App (.NET Framework) e informe o nome Cshp_Regex1;

Vamos incluir uma classe no projeto criado onde vamos definir o código que vai usar a expressão regular.

No menu Project clique em Add Class e informe o nome PalavraRegex;

A seguir inclua o código abaixo nesta classe:

using System;
using System.IO;
using System.Text.RegularExpressions;

1 of 5 16/08/2019 16:03
.NET - Usando Expressões Regulares - I http://www.macoratti.net/17/03/net_regex1.htm

namespace Cshp_Regex1
{
public class PalavraRegex
{
private static Regex _Regex;

public PalavraRegex(string palavra)


{
_Regex = new Regex(@"\b" + palavra + "\\b");
}

public void Procurar(string arquivo)


{
String linha;
int numeroLinha = 0;
using (StreamReader sr = new StreamReader(arquivo))
{
while (null != (linha = sr.ReadLine()))
{
numeroLinha++;
if (_Regex.IsMatch(linha))
{
Console.WriteLine("Ocorrência da palavra: {0}' na linha {1}", linha, numeroLinha);
}
}
}
}
}
}

Este código define uma expressão regular do tipo \bpalavra\b no construtor da classe :

        public PalavraRegex(string palavra)


        {
            _Regex = new Regex(@"\b" + palavra + "\\b");
        }

Uma classe de caractere especial, \b, permite que você procure facilmente por palavras inteiras.

A expressão esta sendo montada assim:

\b -> um limite de palavra (um espaço, início de uma linha ou pontuação). . .


palavra
\b -> um limite de palavra no final da palavra.

O método Procurar() abre o arquivo informado onde a busca pelas ocorrências da palavra serã realizadas e usa o
método IsMatch que Indica se a expressão regular localiza uma correspondência na cadeia de caracteres de
entrada.

Você pode consumir esta classe de diversas formas. No exemplo vamos definir no arquivo Program.cs o código
abaixo:

using System;

namespace Cshp_Regex1
{
class Program
{
static void Main(string[] args)
{
while (true)
{
Console.WriteLine("Informe o nome do arquivo. (Para sair tecle -> X )");
string arquivo = Console.ReadLine();
if (arquivo == "X")
{
break;
}
Console.WriteLine("Informe a palavra a procurar. (Para sair tecle -> X ");
string palavra = Console.ReadLine();

2 of 5 16/08/2019 16:03
.NET - Usando Expressões Regulares - I http://www.macoratti.net/17/03/net_regex1.htm

if (palavra == "X")
{
break;
}

PalavraRegex r = new PalavraRegex(palavra);


r.Procurar(arquivo);
}
}
}
}

Optei por criar um programa Console onde o usuário vai informar o local e nome do arquivo no qual deseja
pesquisar a palavra e a seguir qual palavra vai pesquisar.

O programa irá exibir as ocorrências indicando o número da linha no arquivo.

No exemplo de execução abaixo foram informados :

1- arquivo : c:\dados\txt\FernandoPessoa2.txt

2- palavra : nada

Nota :  A versão VB .NET para classe PalavraRegex é dada abaixo:

Imports System.IO
Imports System.Text.RegularExpressions

Public Class PalavraRegex

Private Shared _Regex As Regex

Sub New(palavra As String)


_Regex = New Regex("\b" & palavra & "\b")
End Sub

Public Sub Procurar(ByVal arquivo As String)


Dim linha As String
Dim numeroLinha As Integer = 0
Dim sr As StreamReader = File.OpenText(arquivo)
linha = sr.ReadLine

While Not linha Is Nothing


numeroLinha = numeroLinha + 1
If _Regex.IsMatch(linha) Then
Console.WriteLine("Ocorrências : '{0}' na linha {1}",
linha,

3 of 5 16/08/2019 16:03
.NET - Usando Expressões Regulares - I http://www.macoratti.net/17/03/net_regex1.htm

numeroLinha)
End If
linha = sr.ReadLine
End While

sr.Close()
End Sub

End Class

Pegue o projeto completo aqui : Cshp_Regex1.zip

"Se alguém me serve, siga-me, e onde eu estiver, ali estará também o meu servo. E, se alguém me servir,
meu Pai o honrará. "
João 12:26

Veja os Destaques e novidades do SUPER DVD Visual Basic


(sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Veja mais sistemas completos para a plataforma .NET no


Super DVD .NET , confira...

Curso Básico VB .NET - Vídeo Aulas

Quer aprender C# ??

Chegou o Super DVD C# com exclusivo material de suporte


e vídeo aulas com curso básico sobre C#.

Curso C# Basico - Video Aulas

Quer aprender os conceitos da Programação Orientada


a objetos ?

Curso Fundamentos da Programação Orientada a Objetos


com VB .NET

Quer aprender o gerar relatórios com o ReportViewer


no VS 2013 ?

 Curso - Gerando Relatórios com o ReportViewer no


VS 2013 - Vídeo Aulas

Quer aprender a criar aplicações Web Dinâmicas


usando a ASP .NET MVC 5 ?

 Curso ASP .NET MVC 5 - Vídeo Aulas

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:

Seção VB .NET do Site Macoratti.net


Super DVD .NET - A sua porta de entrada na plataforma .NET
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Seção C# do site Macoratti.net
Super DVD C#
Super DVD Visual Basic

4 of 5 16/08/2019 16:03
.NET - Usando Expressões Regulares - I http://www.macoratti.net/17/03/net_regex1.htm

Curso Básico VB .NET - Vídeo Aulas


Curso C# Básico - Vídeo Aulas
Visual Studio - Dica de produtividade - Quick Launch - Macoratti.net
Visual Studio - Dica de produtividade - Nuget - Macoratti.net
Gerando Hash e comparando arquivos - Macoratti.net
VB .NET - Criando aplicações mais seguras - Macoratti.net
VB .NET - O Calculando o CheckSum para um arquivo - Macoratti.net
VB .NET - Trabalhando com o registro do Windows - Macoratti.net
Acessando o Registro do Windows e os arquivos INI - Macoratti.net

José Carlos Macoratti

5 of 5 16/08/2019 16:03