Referência retroativa de Regex C#

Resumo : neste tutorial, você aprenderá sobre a referência anterior de regex C# para fazer referência a um grupo de captura dentro da mesma expressão regular.

Introdução à referência anterior do Regex C#

Backreference permite fazer referência a um grupo capturado dentro da mesma expressão regular. Backrefence é útil para combinar ocorrências repetidas de um padrão.

Para especificar uma referência anterior, use \nonde n representa o número de um grupo capturado que você deseja referenciar. Observe que o primeiro grupo capturado é \1, o segundo grupo de captura é \2e assim por diante.

O exemplo a seguir mostra o uso de uma referência anterior que corresponde a uma palavra duplicada em uma frase:

(\w+)\s+\1Linguagem de código:  C#  ( cs )

Por exemplo, este padrão corresponderá às palavras “the the” na frase:

“é o melhor”

Aqui está a explicação do padrão:

  • (\w+): captura um ou mais caracteres de palavras e os armazena no primeiro grupo de captura.
  • \s+: corresponde a um ou mais caracteres de espaço em branco
  • \1: refere-se ao texto capturado pelo primeiro grupo de captura.

O programa a seguir retorna a palavra duplicada “o” na frase “é o melhor”:

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


var text = "It's the the best";
var pattern = @"(\w+)\s+\1";

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

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

Saída:

the theLinguagem de código:  C#  ( cs )

O programa a seguir remove a palavra repetida usando a referência anterior:

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


var text = "It's the the best";
var pattern = @"(\b\w+)\s+\b\1\b";


var result = Regex.Replace(text, pattern, "$1");

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

Saída:

It's the bestLinguagem de código:  C#  ( cs )

Observe que usamos o Replace()método para substituir o padrão pelo “ $1” no texto. O “ $1” especifica o padrão de substituição, que é a palavra capturada ( $1).

As referências anteriores de Regex são úteis em algumas situações, por exemplo:

  • Encontrar palavras ou frases duplicadas em sentenças (já demonstradas anteriormente).
  • Combinando padrões repetidos.
  • Garantindo simetria em estruturas de cordas.
  • Validando a entrada com base em correspondências anteriores.

Resumo

  • Use uma referência anterior para fazer referência a um grupo capturado na mesma expressão regular.

Deixe um comentário

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