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
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:
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.
Posts Relacionados:
- Extesion Methods
Esse assunto é bem legal e simples, como verão abaixo. Uma classe de extensão, permite que gere novos métodos para as váriaveis do projeto como acontece em .ToString(), .ToUpper(). Pemitindo costumizar o codigo ao seu gosto, centralizando seus métodos em... - Expressões Regulares
Um dos estudos recentes que estou pondo em prática, acredito no poder da expressão regular e na sua importância, apesar de ter outras formas mais “Humanas” de se fazer a mesma coisa, é importante termos o conhecimento dessas expressões, como... - Colocar Confirm() no ASP:Menu
Bom Pessoal,para quem utiliza os benditor <asp:menu>, passa por algumas necessidades, como por exemplo, colocar javascript quando o cliente clicar sobre um dos itens. Então Vamos a Solução: Existe Duas Possibilidades, se você estiver carregando o menuItem por um...
março 5th, 2012 - 09:49
Encontre no Texto com Expressões Regulares | Robson Alves I was recommended this web site by my cousin. I’m not sure whether this post is written by him as no one else know such detailed about my difficulty. You are wonderful! Thanks! your article about Encontre no Texto com Expressões Regulares | Robson AlvesBest Regards SchaadAndy
abril 20th, 2012 - 17:30
I was studying some of your blog posts on this website and I conceive this website is real instructive! Continue writing subjects like tuberculosis I love to read this kind of information and I think that all the people like this too… Many thanks…