Quantificadores Regex – 01

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
atLinguagem de código:  C#  ( cs )

O seguinte explica o significado do padrão de expressão regular \w*at:

  • \wcorresponde a qualquer caractere de palavra.
  • *é um quantificador que corresponde a zero ou mais ocorrências do elemento anterior, que neste caso é \w.
  • atcorresponde ao caractere literal “ at“.

Portanto, o padrão \w*atcorresponderá 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 \dcorresponder 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
8Linguagem de código:  C#  ( cs )

O padrão \d+:

  • \dcorresponde 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 colore 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
colourLinguagem 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 \dpara 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
00Linguagem 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:mme 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:30Linguagem 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-yyyyou 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-2000Linguagem de código:  C#  ( cs )

Resumo

  • Use quantificadores regex para corresponder a um padrão anterior um número especificado de vezes.

Deixe um comentário

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