Python Regex não ganancioso

Resumo : neste tutorial, você aprenderá sobre os quantificadores regex não gananciosos (ou preguiçosos) que correspondem aos seus elementos anteriores o menor número de vezes possível.

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

Os quantificadores permitem combinar seus elementos anteriores várias vezes. Os quantificadores funcionam em um de dois modos: ganancioso e não ganancioso (preguiçoso).

Quando os quantificadores funcionam no modo ganancioso, eles são chamados de quantificadores gananciosos. Da mesma forma, quando os quantificadores funcionam no modo não ganancioso, eles são chamados de quantificadores não gananciosos ou quantificadores preguiçosos.

Por padrão, os quantificadores funcionam no modo ganancioso. Isso significa que os quantificadores gananciosos corresponderão aos seus elementos anteriores tanto quanto possível para retornar à maior correspondência possível.

Por outro lado, os quantificadores não gananciosos corresponderão o mínimo possível para retornar a menor correspondência possível. quantificadores não gananciosos são o oposto dos quantificadores gananciosos.

Para transformar quantificadores gananciosos em quantificadores não gananciosos, adicione um ponto de interrogação extra ( ?) aos quantificadores. A tabela a seguir mostra os quantificadores gananciosos e seus quantificadores não gananciosos 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 Python regex

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

import re

s = '<button type="submit" class="btn">Send</button>'

pattern = '".+?"'
matches = re.finditer(pattern, s)

for match in matches:
    print(match.group())
Linguagem de código:  Python  ( python )

Saída:

"submit"
"btn"Linguagem de código:  Python  ( python )

Resumo

  • Quantificadores não gananciosos correspondem o menos possível aos seus elementos anteriores para retornar a menor correspondência possível.
  • Adicione um ponto de interrogação (?) a um quantificador para transformá-lo em um quantificador não ganancioso.

Deixe um comentário

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