Classes de caracteres Regex C#

Resumo : neste tutorial, você aprenderá como usar classes de caracteres em expressões regulares usando C#.

Introdução às classes de caracteres C# Regex

As classes de caracteres definem um conjunto de caracteres. Por exemplo:

  • Dígitos (0 a 9)
  • Alfabetos (a a z)
  • Espaço em branco (tabulação, espaço,…)

As classes de caracteres permitem combinar caracteres de um conjunto especificado de caracteres.

\d: classe de caracteres de dígito

O \d representa a classe de caracteres de dígito que corresponde a qualquer dígito de 0 a 9. O exemplo a seguir usa a \dclasse de caracteres para localizar todos os dígitos em uma string:

using System.Text.RegularExpressions;
using static System.Console;


var text = "7 Awesome New Features in C# 12";
var pattern = @"\d";

var matches = Regex.Matches(text, pattern);

foreach (var match in matches)
{
    WriteLine(match);
}Linguagem de código:  C#  ( cs )

Saída:

3
1
2

Para combinar dois dígitos, você usa \d\dassim:

using System.Text.RegularExpressions;
using static System.Console;


var text = "3 Awesome New Features in C# 12";
var pattern = @"\d\d";

var matches = Regex.Matches(text, pattern);

foreach (var match in matches)
{
    WriteLine(match);
}Linguagem de código:  C#  ( cs )

Saída:

12

Neste exemplo, a \d\dcorrespondência é 12, não 3.

Observe que você aprenderá como usar os quantificadores para tornar a classe de caracteres mais concisa assim \d{2}

\w: a classe de caracteres da palavra

Representa \wa classe de caracteres da palavra que corresponde a um único caractere ASCII, incluindo alfabetos, dígitos, sublinhados (_)

O exemplo a seguir mostra como usar a \wclasse de caracteres para corresponder a todos os caracteres de palavras de uma string:

using System.Text.RegularExpressions;
using static System.Console;


var text = "C# is awesome";
var pattern = @"\w";

var matches = Regex.Matches(text, pattern);

foreach (var match in matches)
{
    WriteLine(match);
}
Linguagem de código:  C#  ( cs )

Saída:

C
i
s
a
w
e
s
o
m
eLinguagem de código:  texto simples  ( texto simples )

\s: classe de caracteres de espaço em branco

O \srepresenta a classe de caracteres de espaço em branco que inclui nova linha, tabulação, tabulação vertical, espaço, etc. O exemplo a seguir usa a \sclasse de caracteres para corresponder caracteres de espaço em branco em uma string:

using System.Text.RegularExpressions;
using static System.Console;


var text = "C# is awesome!";
var pattern = @"\s";

var matches = Regex.Matches(text, pattern);

WriteLine($"{matches.Count} matches found");

foreach (var match in matches)
{
    WriteLine(match);
}Linguagem de código:  C#  ( cs )

Saída:

2 matches found


Ele retorna duas correspondências que correspondem aos dois espaços na string.

Classes de caracteres inversos

As classes de caracteres inversos também são chamadas de classes de caracteres negados. Eles permitem que você corresponda a qualquer caractere que não seja um conjunto especificado de caracteres. Por exemplo, uma classe de caracteres inversa da classe de caracteres de dígito corresponde a qualquer caractere único, exceto um dígito.

A tabela fluida exibe classes de caracteres e suas versões inversas:

Classe de personagem Classe de personagem inversa Descrição
\d \D Combine qualquer caractere, excluindo dígitos
\w \W Combine qualquer caractere que não seja um caractere de palavra
\s \S Combine qualquer caractere, excluindo espaços em branco

Por exemplo, o seguinte usa a \Dclasse de caracteres para corresponder ao caractere não numérico de um número de telefone:

using System.Text.RegularExpressions;
using static System.Console;


var phone = "+1-(408)-555-6666";
var pattern = @"\D";

var matches = Regex.Matches(phone, pattern);


foreach (var match in matches)
{
    WriteLine(match);
}Linguagem de código:  C#  ( cs )

Saída:

+
-
(
)
-
-Linguagem de código:  texto simples  ( texto simples )

Para transformar o número de telefone do +1-(408)-555-6666formato para 14085556666, você usa o Replace()método da Regexclasse:

using System.Text.RegularExpressions;
using static System.Console;


var phone = "+1-(408)-555-6666";
var pattern = @"\D";

var result = Regex.Replace(phone, pattern, "");

WriteLine(result);Linguagem de código:  C#  ( cs )

Saída:

14085556666

Resumo

  • Uma classe de caracteres define um conjunto de caracteres.
  • \drepresenta a classe de caracteres de dígito.
  • \wrepresenta a classe de caracteres da palavra.
  • \srepresenta a classe de caracteres de espaço em branco.
  • \D, \W, \Ssão classes de caracteres inversas de \d, \w, \s, que correspondem a qualquer caractere, excluindo os caracteres definidos no conjunto.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *