Quantificadores Preguiçosos

Resumo : neste tutorial, você aprenderá sobre os quantificadores preguiçosos para encontrar a menor correspondência em uma string de entrada.

Introdução aos quantificadores preguiçosos

Quantificadores preguiçosos, também conhecidos como quantificadores não gananciosos, são um recurso em expressões regulares que modificam o comportamento dos quantificadores para corresponder o mínimo possível. Eles fornecem a menor correspondência possível que satisfaz o padrão de expressão regular.

Por padrão, os quantificadores em expressões regulares são gananciosos , o que significa que eles correspondem tanto quanto possível. No entanto, os quantificadores preguiçosos funcionam de maneira oposta. Eles correspondem o menos possível, ao mesmo tempo que permitem que o padrão geral seja satisfeito.

Quantificadores preguiçosos são indicados anexando um ponto de interrogação ( ?) aos quantificadores padrão.

A tabela a seguir mostra os quantificadores gananciosos, quantificadores preguiçosos e os significados dos quantificadores preguiçosos:

Quantificadores gananciosos Quantificadores Preguiçosos Significado do quantificador preguiçoso
* *? Combine zero ou mais ocorrências (o menor número possível)
+ +? Combine uma ou mais ocorrências (o menor número possível)
? ?? Combine zero ou uma ocorrência (de preferência zero)
{n} {n}? Combine exatamente n ocorrências
{n,} {n,}? Combine n ou mais ocorrências
{n,m} {n,m}? Correspondência entre n e m ocorrências (o menor número possível)

Exemplo de quantificadores preguiçosos

O exemplo a seguir ilustra como usar um quantificador lento para extrair valores de atributos de uma tag de entrada:

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


var html = """<input type="submit" values="Send">""";

var pattern = """ 
              ".+?"
              """;

var matches = Regex.Matches(html, pattern);
foreach (var match in matches)
{
    WriteLine(match);
}Linguagem de código:  C#  ( cs )

Saída:

"submit"
"Send"Linguagem de código:  JSON/JSON com comentários  ( json )

Como funciona.

  1. O programa começa com a usingdiretiva necessária para incluir a Regexclasse do System.Text.RegularExpressionsnamespace.
  2. O programa então inclui using static System.Console;para permitir o uso do WriteLinemétodo sem especificar explicitamente a Consoleclasse.
  3. A string HTML é definida como htmluma string bruta ( """) que contém um elemento de entrada HTML com o atributo type="submit"e values="Send".
  4. O padrão de expressão regular é definido como patterno uso de uma string bruta com aspas triplas ( """) para evitar escapar do ”dentro da expressão regular. O padrão ".+?"corresponde aos atributos da tag HTML de entrada, incluindo aspas (“). O quantificador lento ?garante que a correspondência seja a menor possível.
  5. O programa usa o Regex.Matches()método para encontrar todas as correspondências do padrão na string HTML html. Ele pega a htmlstring e os patternargumentos as e retorna uma coleção de Matchobjetos que representam as correspondências encontradas.
  6. O programa então itera sobre cada Matchobjeto da matchescoleção usando um foreachloop e usa o WriteLinemétodo para imprimir cada correspondência no console dentro do loop.

Resumo

  • Um quantificador lento em expressões regulares corresponde o mínimo possível e ainda satisfaz o padrão.

Deixe um comentário

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