Expressão regular: quantificadores não gananciosos

Resumo : neste tutorial, você aprenderá como usar quantificadores não gananciosos para corresponder o mínimo possível aos elementos anteriores.

Introdução aos quantificadores não gananciosos (ou preguiçosos) de regex JavaScript

Em expressões regulares, os quantificadores permitem combinar seus elementos anteriores com um número especificado de vezes.

Por padrão, os quantificadores usam o modo guloso para correspondência. No modo ganancioso, os quantificadores tentam combinar o maior número possível e retornar as maiores correspondências. Quando os quantificadores usam o modo guloso, eles são chamados de quantificadores gulosos. No tutorial do quantificador , você aprendeu como trabalhar com quantificadores gananciosos como *,, +e ?.

Além do modo ganancioso, os quantificadores também funcionam no modo não ganancioso ou no modo preguiçoso. No modo lento, os quantificadores correspondem ao menor número possível de elementos anteriores e retornam as menores correspondências. Quando os quantificadores usam o modo lento, eles são frequentemente chamados de quantificadores não gananciosos ou quantificadores preguiçosos.

Para transformar um quantificador ganancioso em um quantificador não ganancioso, você adiciona um ponto de interrogação extra a ele. A tabela a seguir lista os quantificadores gananciosos e seus quantificadores preguiçosos correspondentes:

Quantificador ganancioso Quantificador preguiçoso Significado
* *? Combine seu elemento anterior zero ou mais vezes.
+ +? Combine seu elemento anterior uma ou mais vezes.
? ?? Combine seu elemento anterior com zero ou uma vez.
{ n } { n }? Combine seu elemento anterior exatamente  n  vezes.
{ n ,} { n ,}? Combine seu elemento anterior pelo menos  n  vezes.
{ n-  , m } { n-  , m }? Combine seu elemento anterior de  n  a  m  vezes.

Exemplo de quantificadores não gananciosos em JavaScript

O programa a seguir usa o quantificador não ganancioso ( +?) para corresponder ao texto entre aspas ( "") de um elemento de botão:

const s = '<button type="submit" class="btn">Send</button>'
const pattern = /".+?"/g;

const result = s.match(pattern)
console.log(result);Linguagem de código:  JavaScript  ( javascript )

Saída:

['"submit"', '"btn"']Linguagem de código:  Python  ( python )

Resumo

  • Os quantificadores preguiçosos correspondem aos seus elementos anteriores o mínimo possível para retornar as menores correspondências possíveis.
  • Use um ponto de interrogação (?) para transformar um quantificador ganancioso em um quantificador preguiçoso.

Deixe um comentário

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