Quantificadores Python Regex

Resumo : neste tutorial, você aprenderá como usar quantificadores regex Python para definir quantas vezes um caractere ou conjunto de caracteres pode ser repetido.

Introdução aos quantificadores regex Python

Em expressões regulares , os quantificadores correspondem aos caracteres ou conjuntos de caracteres anteriores várias vezes. A tabela a seguir mostra todos os quantificadores e seus significados:

Quantificador Nome Significado
* Asterisco Combine seu elemento anterior zero ou mais vezes.
+ Mais Combine seu elemento anterior uma ou mais vezes.
? Ponto de interrogação Combine seu elemento anterior com zero ou uma vez.
{ n } aparelho encaracolado Combine seu elemento anterior exatamente  n vezes.
{ n ,} aparelho encaracolado Combine seu elemento anterior pelo menos  n vezes.
{ n-  , m } aparelho encaracolado Combine seu elemento anterior de  n a  mvezes.

Combine zero ou mais vezes ( *)

O quantificador ( *) corresponde ao seu elemento anterior zero ou mais vezes. Por exemplo, o programa a seguir usa o *quantificador para corresponder a qualquer string que termine com Python:

import re

s = """CPython, IronPython, and JPython 
       are major Python's implementation"""

matches = re.finditer('\w*Python', s)

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

Neste exemplo:

  • Corresponde a \wqualquer caractere de palavra única.
  • Portanto, \w*corresponde a zero ou mais caracteres de palavras.
  • Portanto, \w*Pythoncombine qualquer zero ou mais caracteres seguidos pela string Python.

Como resultado, o \w*Pythonpadrão corresponde a CPython, IronPython, JPythone Pythonna string:

<re.Match object; span=(0, 7), match='CPython'>
<re.Match object; span=(9, 19), match='IronPython'>
<re.Match object; span=(25, 32), match='JPython'>  
<re.Match object; span=(51, 57), match='Python'>  Linguagem de código:  Python  ( python )

Combine uma ou mais vezes ( +)

O +quantificador corresponde ao seu elemento anterior uma ou mais vezes. Por exemplo, \d+corresponde a um ou mais dígitos.

O exemplo a seguir usa o +quantificador para corresponder a um ou mais dígitos em uma string:

import re

s = "Python 3.10 was released in 2021"

matches = re.finditer('\d+', s)

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

Saída:

<re.Match object; span=(7, 8), match='3'>
<re.Match object; span=(9, 11), match='10'>   
<re.Match object; span=(28, 32), match='2021'>Linguagem de código:  Python  ( python )

Corresponder zero ou uma vez ( ?)

O ?quantificador corresponde ao seu elemento anterior zero ou uma vez.

O exemplo a seguir usa o quantificador (?) para corresponder ambas as strings colore colour:

import re

s = "What color / colour do you like?"

matches = re.finditer('colou?r', s)

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

Saída:

<re.Match object; span=(5, 10), match='color'>
<re.Match object; span=(13, 19), match='colour'>Linguagem de código:  Python  ( python )

Neste exemplo, u?corresponde a zero ou um caractere u. Portanto, o colou?rpadrão corresponde a ambos colorecolour

Corresponder exatamente n vezes: {n}

O {n}quantificador corresponde ao seu elemento anterior exatamente nvezes, onde né zero ou um número inteiro positivo.

Por exemplo, o programa a seguir usa o quantificador {n}para corresponder a uma sequência de tempo no hh:mmformato:

import re

s = "It was 11:05 AM"

matches = re.finditer('\d{2}:\d{2}', s)

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

Saída:

<re.Match object; span=(7, 12), match='11:05'>Linguagem de código:  Python  ( python )

Neste exemplo, \d{2}corresponde exatamente a dois dígitos. Portanto, \d{2}:\d{2}corresponde a uma string que começa com dois dígitos, dois pontos :, e termina com dois dígitos.

Combine pelo menos n vezes: {n,}

O {n,}quantificador corresponde ao seu elemento anterior pelo menos nvezes, onde né zero ou um número inteiro positivo.

Por exemplo, o programa a seguir usa o {n, }quantificador para combinar as strings de data com o formato m-d-yyyyou :mm-dd-yyyy

import re

s = "5-5-2021 or 05-05-2021 or 5/5/2021"

matches = re.finditer('\d{1,}-\d{1,}-\d{4}', s)

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

Saída:

<re.Match object; span=(0, 8), match='5-5-2021'>
<re.Match object; span=(12, 22), match='05-05-2021'>Linguagem de código:  Python  ( python )

Correspondência de n e m vezes: {n,m}

O {n,m}quantificador corresponde ao seu elemento anterior pelo menos nvezes, mas não mais do que mvezes, onde ne msão zero ou um número inteiro positivo. Por exemplo:

import re

s = "5-5-2021 or 05-05-2021 or 5/5/2021"

matches = re.finditer('\d{1,2}-\d{1,2}-\d{4}', s)

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

Saída:

<re.Match object; span=(0, 8), match='5-5-2021'>
<re.Match object; span=(12, 22), match='05-05-2021'>Linguagem de código:  Python  ( python )

Neste exemplo, o padrão \d{1,2}corresponde a um ou dois dígitos. Portanto, o padrão \d{1,2}-\d{1,2}-\d{4}corresponde a uma sequência de data no formato d-m-yyyyou dd-mm-yyyy.

Resumo

  • Os quantificadores correspondem aos seus elementos anteriores várias vezes.

Deixe um comentário

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