C # Regex em exemplos

A tradução do artigo foi preparada especificamente para os alunos do curso "Desenvolvedor C #" .




A classe Regex implementa expressĂ”es regulares em C #. Neste artigo, vocĂȘ aprenderĂĄ como usar o C # Regex para validar vĂĄrias entradas do usuĂĄrio.

Regex em C # implementa expressĂ”es regulares. A classe C # Regex oferece mĂ©todos e propriedades para analisar texto grande, a fim de procurar padrĂ”es de caracteres. Neste artigo, vocĂȘ aprenderĂĄ como usar a classe .NET Regex em C #.

ExpressÔes regulares


Uma expressĂŁo regular Ă© usada para verificar se uma sequĂȘncia corresponde a um padrĂŁo. Uma expressĂŁo regular (expressĂŁo regular ou regex ou regexp) Ă© uma sequĂȘncia de caracteres que define um padrĂŁo. Um padrĂŁo pode consistir em literais, nĂșmeros, caracteres, operadores ou construçÔes. O padrĂŁo Ă© usado para encontrar correspondĂȘncias em uma sequĂȘncia ou arquivo.
ExpressĂ”es regulares sĂŁo frequentemente usadas ao verificar entradas, analisar e localizar cadeias. Por exemplo, verificando uma data de nascimento vĂĄlida, nĂșmero de segurança social, nome completo, no qual o nome e o sobrenome sĂŁo separados por vĂ­rgula, pesquisando o nĂșmero de ocorrĂȘncias de uma substring, substituindo substrings, formatos de data, formatos de email vĂĄlidos, formato de moeda e assim por diante.

Regex de classe


No .NET, a classe Regex representa um mecanismo de regex. Ele pode ser usado para analisar rapidamente grandes quantidades de texto para encontrar padrÔes de caracteres específicos, extrair, editar, substituir ou excluir substrings de texto e adicionar as strings extraídas à coleção para gerar um relatório.

A classe Regex Ă© definida no espaço para nome System.Text.RegularExpressions. O construtor da classe Regex usa como parĂąmetro uma sequĂȘncia de modelo junto com outros parĂąmetros opcionais.

O seguinte trecho de código cria uma expressão regular a partir de um padrão. Aqui, o padrão corresponde a uma palavra que começa com a letra "M".

//    ,     "M" string pattern = @"\b[M]\w+"; //   Regex Regex rg = new Regex(pattern); 


O seguinte fragmento de código contém um texto longo com os nomes dos autores que precisam ser analisados.

 //   string authors = "Mahesh Chand, Raj Kumar, Mike Gold, Allen O'Neill, Marshal Troll"; 


O mĂ©todo Matches Ă© usado para encontrar todas as correspondĂȘncias em uma expressĂŁo regular e retorna um MatchCollection.

 //    MatchCollection matchedAuthors = rg.Matches(authors); 


O prĂłximo trecho de cĂłdigo passa por uma coleção de correspondĂȘncias.

 //     for (int count = 0; count < matchedAuthors.Count; count++) Console.WriteLine(matchedAuthors[count].Value); 


Aqui estĂĄ o cĂłdigo completo:

 //    ,     "M" string pattern = @"\b[M]\w+"; //   Regex Regex rg = new Regex(pattern); //   string authors = "Mahesh Chand, Raj Kumar, Mike Gold, Allen O'Neill, Marshal Troll"; //    MatchCollection matchedAuthors = rg.Matches(authors); ///     for (int count = 0; count < matchedAuthors.Count; count++) Console.WriteLine(matchedAuthors[count].Value); 


No exemplo acima, o cĂłdigo procura o caractere "M". Mas e se a palavra começar com "m". O seguinte trecho de cĂłdigo usa o parĂąmetro RegexOptions.IgnoreCase para que o Regex nĂŁo faça RegexOptions.IgnoreCase entre maiĂșsculas e minĂșsculas.

 //    ,     "M" string pattern = @"\b[m]\w+"; //   Regex Regex rg = new Regex(pattern, RegexOptions.IgnoreCase); 


Substituindo Vårios Espaços pelo Regex


O mĂ©todo Regex.Replace() Ă© usado para substituir a sequĂȘncia correspondente por uma nova. O exemplo a seguir procura vĂĄrios espaços em uma sequĂȘncia com uma Ășnica.

 //      string badString = "Here is a strig with ton of white space." ; string CleanedString = Regex.Replace(badString, "\\s+", " "); Console.WriteLine($"Cleaned String: {CleanedString}"); 


O seguinte trecho de código substitui os espaços por '-'.

 string CleanedString = Regex.Replace(badString, "\\s+", "-"); 


Dividindo uma sequĂȘncia em caracteres usando o Regex


No exemplo a seguir, o padrĂŁo de expressĂŁo regular [az] + e o mĂ©todo Regex.Split() sĂŁo usados ​​para dividir uma sequĂȘncia em caracteres, sem distinção entre Regex.Split() .

 //     string azpattern = "[az]+"; string str = "Asd2323b0900c1234Def5678Ghi9012Jklm"; string[] result = Regex.Split(str, azpattern, RegexOptions.IgnoreCase, TimeSpan.FromMilliseconds(500)); for (int i = 0; i < result.Length; i++) { Console.Write("'{0}'", result[i]); if (i < result.Length - 1) Console.Write(", "); } 


ExpressÔes regulares em c #


ExpressĂ”es regulares sĂŁo o padrĂŁo de correspondĂȘncia de padrĂ”es para analisar e alterar cadeias de caracteres e permitem ao usuĂĄrio expressar como um programa de computador deve procurar o padrĂŁo especificado no texto e, em seguida, o que deve fazer quando cada correspondĂȘncia for encontrada com o padrĂŁo fornecido. Às vezes, eles sĂŁo abreviados como "regex". Eles sĂŁo uma maneira poderosa de encontrar e modificar seqĂŒĂȘncias de caracteres que assumem um formato especĂ­fico.

Aqui estå um exemplo simples de código C # que mostra como as expressÔes regulares são usadas.

 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; namespace RegularExpression1 { class Program { static void Main(string[] args) { Regex r = new Regex(@"^\+?\d{0,2}\-?\d{4,5}\-?\d{5,6}"); //  Regex    . string[] str = { "+91-9678967101", "9678967101", "+91-9678-967101", "+91-96789-67101", "+919678967101" }; //         . foreach (string s in str) { Console.WriteLine("{0} {1} a valid mobile number.", s, r.IsMatch(s) ? "is" : "is not"); //  IsMatch    ,   ,     . } } } } 


Aqui estå uma explicação detalhada de expressÔes regulares e seu uso em C # e .NET:
ExpressÔes regulares em c #

Regex para verificação de e-mail


Para testar vårios endereços de email, podemos usar as seguintes expressÔes regulares. Separamos os endereços usando o delimitador ';'

^((\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)\s*[;]{0,1}\s*)+$

Se vocĂȘ deseja usar o delimitador ',' use o seguinte

^((\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)\s*[,]{0,1}\s*)+$

e se vocĂȘ deseja usar os dois delimitadores ',' e ';' entĂŁo use isso

^((\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)\s*[;,.]{0,1}\s*)+$

Assim, usando a expressĂŁo regular acima, vocĂȘ pode verificar um ou vĂĄrios endereços ao mesmo tempo.

Saiba mais aqui: Regex para verificar vårios endereços de email .

Validando entrada do usuårio com expressÔes regulares


Este artigo explica como usar expressÔes regulares (a classe Regex do espaço para nome System.Text.RegularExpressions) em C # e .NET.

Podemos usar o método Regex.Match, que recebe entrada e uma expressão regular e retorna sucesso se

 if (!Regex.Match(firstNameTextBox.Text, "^[AZ][a-zA-Z]*$").Success) {} if (!Regex.Match(addressTextBox.Text, @"^[0-9]+\s+([a-zA-Z]+|[a-zA-Z]+\s[a-zA-Z]+)$").Success) if (!Regex.Match(cityTextBox.Text, @"^([a-zA-Z]+|[a-zA-Z]+\s[a-zA-Z]+)$").Success) if (!Regex.Match(stateTextBox.Text, @"^([a-zA-Z]+|[a-zA-Z]+\s[a-zA-Z]+)$").Success) if (!Regex.Match(zipCodeTextBox.Text, @"^\d{5}$").Success) { if (!Regex.Match(phoneTextBox.Text, @"^[1-9]\d{2}-[1-9]\d{2}-\d{4}$").Success) 


Saiba mais aqui:
Validando entrada do usuårio com expressÔes regulares


Dividir string usando Regex.split (regex) em C #


Nesta parte, aprenderemos como quebrar uma string usando RegEx em C #. Regex quebra uma cadeia de caracteres com base em um padrĂŁo. Ele processa o delimitador especificado como um modelo. É por isso que o Regex Ă© melhor que o string.Split. Aqui estĂŁo alguns exemplos de como quebrar uma string usando o Regex em C #. Vamos escrever o cĂłdigo.

Para usar o Regex para dividir uma sequĂȘncia, adicione os seguintes espaços para nome.

 using System; using System.Text.RegularExpressions; using System.Collections.Generic; 


Exemplo 1:

Separe os nĂșmeros das strings usando o Regex.

 string Text = "1 One, 2 Two, 3 Three is good."; string[] digits = Regex.Split(Text, @"\D+"); foreach (string value in digits) { int number; if (int.TryParse(value, out number)) { Console.WriteLine(value); } } 


O cĂłdigo acima quebra a cadeia usando \ D + e gera os nĂșmeros iterando sobre o resultado.

Saiba mais aqui:

Dividir string usando expressÔes regulares em C #

Substituir caracteres especiais da cadeia de caracteres por regex


Nesta parte, mostrarei como substituir caracteres especiais por expressÔes regulares em C #.

Se vocĂȘ possui uma sequĂȘncia com caracteres especiais e deseja removĂȘ-los ou substituĂ­-los, pode usar uma expressĂŁo regular para isso.

Use o seguinte cĂłdigo:

 Regex.Replace(your String, @"[^0-9a-zA-Z]+", "") 


Este cĂłdigo excluirĂĄ todos os caracteres especiais, mas se vocĂȘ nĂŁo desejar excluir alguns caracteres especiais, por exemplo, a vĂ­rgula "," e os dois pontos ":" - faça as seguintes alteraçÔes:

 Regex.Replace(Your String, @"[^0-9a-zA-Z:,]+", "") 


Da mesma forma, vocĂȘ pode fazer alteraçÔes de acordo com seus requisitos.

Nota:

Deve-se notar que expressĂ”es regulares nĂŁo sĂŁo uma panacĂ©ia para toda pequena manipulação de string. Se vocĂȘ precisar de uma anĂĄlise simples fornecida pela classe String ou por outras classes, tente usĂĄ-lo.


Para leitura adicional



Se vocĂȘ nĂŁo conhece expressĂ”es regulares, recomendo a leitura deste artigo, Introdução Ă s expressĂ”es regulares .

Aqui estå outro artigo: " Usando expressÔes regulares em c # "

Source: https://habr.com/ru/post/pt469989/


All Articles