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 m vezes. |
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
\w
qualquer caractere de palavra única. - Portanto,
\w*
corresponde a zero ou mais caracteres de palavras. - Portanto,
\w*Python
combine qualquer zero ou mais caracteres seguidos pela stringPython
.
Como resultado, o \w*Python
padrão corresponde a CPython
, IronPython
, JPython
e Python
na 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 color
e 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?r
padrão corresponde a ambos color
ecolour
Corresponder exatamente n vezes: {n}
O {n}
quantificador corresponde ao seu elemento anterior exatamente n
vezes, 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:mm
formato:
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 n
vezes, 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-yyyy
ou :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 n
vezes, mas não mais do que m
vezes, onde n
e m
sã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-yyyy
ou dd-mm-yyyy
.
Resumo
- Os quantificadores correspondem aos seus elementos anteriores várias vezes.