Resumo : neste tutorial, você aprenderá como usar o regex Python fullmatch()
para combinar toda a string com uma expressão regular.
Introdução à função fullmatch de regex do Python
A fullmatch()
função retorna um Match
objeto se toda a string corresponder ao padrão de pesquisa de uma expressão regular ou None
caso contrário.
A sintaxe da fullmatch()
função é a seguinte:
re.fullmatch(pattern, string, flags=0)
Linguagem de código: Python ( python )
Nesta sintaxe:
pattern
especifica uma expressão regular para corresponder.string
especifica a sequência de entrada.flags
O parâmetro é opcional e o padrão é zero. Oflags
parâmetro aceita um ou mais sinalizadores regex . Oflags
parâmetro altera a forma como o mecanismo regex corresponde ao padrão.
Exemplo de função fullmatch de regex Python
O exemplo a seguir usa a fullmatch()
função para validar um endereço de e-mail:
import re
email = '[email protected]'
pattern = r'[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}'
match = re.fullmatch(pattern, email)
if match is not None:
print(f'The email "{match.group()}" is valid')
else:
print(f'The email "{email}"" is not valid')
Linguagem de código: Python ( python )
Saída:
The email "[email protected]" is valid
Linguagem de código: Python ( python )
A seguir é definida uma função que usa a fullmatch()
função para validar um endereço de e-mail. Ele retorna True
se o e-mail for válido ou gera uma ValueError
exceção caso contrário:
import re
def is_email(s: str) -> bool:
pattern = r'[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}'
if re.fullmatch(pattern, s) is None:
raise ValueError(f'The {s} is not a valid email address')
return True
Linguagem de código: Python ( python )
E você pode usar a is_email()
função para validar um email como este:
if __name__ == '__main__':
try:
if is_email('no-reply@pythontutorial'):
print('The email is valid')
except ValueError as e:
print(e)
Linguagem de código: Python ( python )
Saída:
The no-reply@pythontutorial is not a valid email address
Linguagem de código: Python ( python )
Fullmatch vs correspondência de regex Python
Ambas as funções fullmatch()
e match()
retornam um Match
objeto se encontrarem uma correspondência.
A fullmatch()
função combina toda a string com um padrão, enquanto a match()
função só encontra uma correspondência no início da string. Veja o exemplo a seguir:
import re
s = 'Python 3'
pattern = 'Python'
# fullmatch
match = re.fullmatch(pattern, s)
if match is not None:
print('fullmatch:', match.group())
# search
match = re.match(pattern, s)
if match is not None:
print('match:', match.group())
Linguagem de código: Python ( python )
Saída:
match: Python
Linguagem de código: Python ( python )
Neste exemplo, fullmatch()
retorna None
porque o padrão Python
corresponde apenas ao início da string, não à string inteira.
Por outro lado, a match()
função corresponde ao padrão no início da string e retorna a correspondência.
Fullmatch Python vs. pesquisa
Ambas as funções fullmatch()
e search()
retornam um Match
objeto se encontrarem uma correspondência de um padrão em uma string. No entanto, fullmatch()
corresponde a toda a string enquanto search()
corresponde a qualquer lugar da string.
Por exemplo:
import re
s = 'Python 3'
pattern = '\d'
# fullmatch
match = re.fullmatch(pattern,s)
if match is not None:
print(match.group())
# search
match = re.search(pattern,s)
if match is not None:
print(match.group()) # 3
Linguagem de código: Python ( python )
Saída:
3
Linguagem de código: Python ( python )
Neste exemplo, o padrão \d
corresponde a um único dígito. A fullmatch()
função retorna None
porque a string inteira 'Python 3'
não corresponde.
No entanto, a search()
função retorna uma correspondência porque poderia encontrar o dígito 3 no final da string.
Resumo
- Use a função regex do Python
fullmatch()
para verificar se a string inteira corresponde a um padrão de uma expressão regular.