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 \d
classe 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\d
assim:
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\d
correspondê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 \w
a 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 \w
classe 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
e
Linguagem de código: texto simples ( texto simples )
\s: classe de caracteres de espaço em branco
O \s
representa 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 \s
classe 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 \D
classe 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-6666
formato para 14085556666
, você usa o Replace()
método da Regex
classe:
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.
\d
representa a classe de caracteres de dígito.\w
representa a classe de caracteres da palavra.\s
representa a classe de caracteres de espaço em branco.\D
,\W
,\S
são classes de caracteres inversas de\d
,\w
,\s
, que correspondem a qualquer caractere, excluindo os caracteres definidos no conjunto.