Robson Alves O que torna um sonho irrealizável é a inércia de quem sonha

21abr/112

Encontre no Texto com Expressões Regulares

Vou mostrar aqui 4 exemplos simples que captura texto, grupo de texto e faz replace dentro de um trecho via Expressão Regular

As ER's transferem um poder gigantesco quando necessitamos desta tarefas e até mesmo na geração de mascarás para textbox.

 

O REGEX possui algumas opções e é muito importante entender a funcionalidade de cada um para utilizar o ER da melhor forma:

http://msdn.microsoft.com/en-us/library/yd1hzczs(v=VS.100).aspx

RegexOptions,png

 

Vamos a prática.


Buscando Texto
 String Fonte = "aonde Quer Vá, Aonde Quer Que Seja, Ande com as pés";
 private void buscaTexto()
        {

            // Instância do Regex e a palavra que vamos buscar na fonte.
            Regex regex = new Regex("Aonde");

            // Armazena a coleção de Expressões Casadas.
            MatchCollection coll = regex.Matches(Fonte);

            foreach (Match item in coll)
            {
                lblResults.Text += String.Format(" Encontrei a palavra {0} na posição {1} e Termina na Posição {2}",
					item.Value.Trim(), item.Index, item.Index + item.Value.Length);
            }
        }

Quantidade de Letras por palavras

String Fonte = "aonde Quer Vá, Aonde Quer Que Seja, Ande com as pés";
 private void buscaTextoQtdLetras()
        {
            //Busca por palavras que contenha apenas Letras Maiuscula e Minuscula
            // e tenham 3 ou mais caracteres.
            Regex regex = new Regex("[a-zA-Z]{5,}");
            // Armazena a coleção de Expressões Casadas.
            MatchCollection coll = regex.Matches(Fonte);

            foreach (Match item in coll)
            {
                lblResults.Text += String.Format(" Encontrei a palavra {0} na posição {1} e Termina na Posição {2} Que Possui {3} ou Mais", item.Value.Trim(), item.Index, item.Index + item.Value.Length, item.Value.Length);
            }
        }

Extraindo Grupo do Text

 private void ExtraindoPorGrupos()
        {
            String End = "1234 Cherry Lane, USA" + Environment.NewLine + "1234 Apple Tree Drive, Smalltown, USA " + Environment.NewLine + "3456 Chry Orchard streetm Smalltown, USA";

            //Busca da esquerda pra direita após os numeros o nome da rua, pegando os espaços \\s entre as letras e pegando todas,
            //ignorando a virgula e tudo que vem após a mesma.
            Regex regex = new Regex("^(?\\d+)\\s*(?[\\w\\s]*)", RegexOptions.Multiline);

            MatchCollection coll = regex.Matches(End);

            foreach (Match item in coll)
            {
                string Rua = item.Groups["Rua"].Value;
                String Numero = item.Groups["Numero"].Value;
                lblResults.Text += ""+ String.Format("Rua : {0} ", Rua);
                lblResults.Text += "" + String.Format("Número :{0} ", Numero);
            }
        }

Replace Com Regex

private void ReplaceTexto()
        {
            Regex regex = new Regex("^[aA]\\w+");

            lblResults.Text += "" + regex.Replace(Fonte, "Por Onde");
        }

Após rodar a aplicação o seguinte resultado é gerado:

OutPut

Muito legal, acredito que isto ajudará a ter noção do que da pra ser feito com Regex e Expressões Regulares, compensa sim dar uma estuda na sintaxe ER para .Net.

Obrigado.

23jan/110

Quick Post – Null Coalescing Operator

Sim, o FrameWork 4.0 tem novidades que eu considero muito interessante, estou estudando de forma prática algumas das novidades, esta aqui me fez escrever um Quick post.

Veja:

Esta Sintaxe:

public  class CoalEscingNullOperator
  {
    public int? Variavel { get; set; }
    public void TestandoNullOperator()
    {

      Variavel = null;

      //Validação
      if (Variavel != null)
      {
        Variavel = Variavel;
      }
      else
      {
        Variavel = 1;
      }
      //CoalEscingNull

     Variavel = Variavel ?? 1;
    }    

  }

 

Veja que com uma linha você tem o memso efeito que um bloco IF..Else!

 

Abraços.