Resumo : neste tutorial, você aprenderá sobre quantificadores regex que especificam a quantidade do elemento anterior em um padrão de expressão regular.
Introdução aos quantificadores Regex
A classe de caracteres de \d
dígito corresponde a qualquer dígito, por exemplo, de 0 a 9. Para corresponder a dois dígitos consecutivos, você precisa repetir a classe de caracteres de dígito como \d\d
. Da mesma forma, para corresponder um grupo de quatro dígitos, você usa classes de caracteres de quatro dígitos \d\d\d\d
.
Se você deseja combinar um ou mais dígitos, esta solução não funciona porque você não sabe o número de dígitos que deseja repetir. É por isso que os quantificadores vêm em socorro.
Quantificadores são metacaracteres em expressões regulares que especificam a quantidade do elemento anterior. Eles definem um número especificado de vezes que um elemento específico deve ocorrer em uma string de entrada durante a correspondência.
Por exemplo, o quantificador + corresponde às ocorrências do elemento anterior uma ou mais vezes. Portanto, \d+
corresponde a um ou mais caracteres de dígitos.
A tabela a seguir lista todos os quantificadores e seus significados:
Quantificador | Nome | Significado |
---|---|---|
* | Asterisco | Combine as ocorrências do elemento anterior zero ou mais vezes. |
+ | Mais | Combine as ocorrências do elemento anterior uma ou mais vezes. |
? | Ponto de interrogação | Combine as ocorrências do elemento anterior com zero ou uma vez. |
{ n } | aparelho encaracolado | Combine as ocorrências do elemento anterior exatamente n vezes. |
{ n ,} | aparelho encaracolado | Combine as ocorrências do elemento anterior pelo menos n vezes. |
{ n , m } | aparelho encaracolado | Combine as ocorrências do elemento anterior de n a m vezes. |
Exemplos de quantificador Regex
Vejamos alguns exemplos de uso dos quantificadores regex.
1) Corresponder as ocorrências do elemento anterior zero ou mais vezes (*)
O exemplo a seguir usa o quantificador ( *
) para corresponder a um texto que começa com zero ou mais caracteres e termina com as letras “ “ at
:
using System.Text.RegularExpressions;
using static System.Console;
var text = "The cat sat on the mat at the park.";
var pattern = @"\w*at";
var matches = Regex.Matches(text, pattern);
foreach (var match in matches)
{
WriteLine(match);
}
Linguagem de código: C# ( cs )
Saída:
cat
sat
mat
at
Linguagem de código: C# ( cs )
O seguinte explica o significado do padrão de expressão regular \w*at
:
\w
corresponde a qualquer caractere de palavra.*
é um quantificador que corresponde a zero ou mais ocorrências do elemento anterior, que neste caso é\w
.at
corresponde ao caractere literal “at
“.
Portanto, o padrão \w*at
corresponderá a qualquer sequência de caracteres de palavras seguida pelas letras “ at
“.
2) Corresponder as ocorrências do elemento anterior zero ou mais vezes (+)
O exemplo a seguir usa o quantificador ( +
) para \d
corresponder a um ou mais dígitos consecutivos em uma string:
using System.Text.RegularExpressions;
using static System.Console;
var text = "C# 12 and .NET 8";
var pattern = @"\d+";
var matches = Regex.Matches(text, pattern);
foreach (var match in matches)
{
WriteLine(match);
}
Linguagem de código: C# ( cs )
Saída:
12
8
Linguagem de código: C# ( cs )
O padrão \d+
:
\d
corresponde a qualquer dígito.+
é um quantificador que corresponde a uma ou mais ocorrências do elemento anterior, que é \d neste caso.
Portanto, \d+
corresponde a uma sequência de dígitos.
3) Corresponder as ocorrências do elemento anterior uma ou mais vezes (?)
O exemplo a seguir mostra como usar o quantificador (*?) para combinar palavras color
e colour
:
using System.Text.RegularExpressions;
using static System.Console;
var text = "color or colour";
var pattern = @"colou?r";
var matches = Regex.Matches(text, pattern);
foreach (var match in matches)
{
WriteLine(match);
}
Linguagem de código: C# ( cs )
Saída:
color
colour
Linguagem de código: C# ( cs )
4) Combinar as ocorrências do elemento anterior exatamente n vezes {n}
O exemplo a seguir usa o quantificador {n}
com \d
para corresponder exatamente a dois dígitos:
using System.Text.RegularExpressions;
using static System.Console;
var text = "It's 12:30 December 1, 2000";
var pattern = @"\d{2}";
var matches = Regex.Matches(text, pattern);
foreach (var match in matches)
{
WriteLine(match);
}
Linguagem de código: C# ( cs )
Saída:
12
30
20
00
Linguagem de código: C# ( cs )
Neste exemplo, o padrão de expressão regular \d{2}
corresponde exatamente a dois dígitos consecutivos. Portanto, retorna 12, 30, 20 e 00.
5) Combine as ocorrências do elemento anterior pelo menos n vezes {n,}
O exemplo a seguir usa o {n,}
quantificador para corresponder à hora nos formatos hh:mm
e h:mm
:
using System.Text.RegularExpressions;
using static System.Console;
var text = "06:20 6:30";
var pattern = @"\d{1,}:\d{1,}";
var matches = Regex.Matches(text, pattern);
foreach (var match in matches)
{
WriteLine(match);
}
Linguagem de código: C# ( cs )
Saída:
06:20
6:30
Linguagem de código: C# ( cs )
6) Combine as ocorrências do elemento anterior de n a m vezes {n, m}
O exemplo a seguir usa o {n,m}
quantificador para corresponder a uma data no formato m-d-yyyy
ou mm-dd-yyyy
:
using System.Text.RegularExpressions;
using static System.Console;
var text = "12-31-1999 to 1-1-2000";
var pattern = @"\d{1,2}-\d{1,2}-\d{4}";
var matches = Regex.Matches(text, pattern);
foreach (var match in matches)
{
WriteLine(match);
}
Linguagem de código: C# ( cs )
Saída:
12-31-1999
1-1-2000
Linguagem de código: C# ( cs )
Resumo
- Use quantificadores regex para corresponder a um padrão anterior um número especificado de vezes.