Correspondência completa do Python Regex()

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 Matchobjeto se toda a string corresponder ao padrão de pesquisa de uma expressão regular ou Nonecaso contrário.

A sintaxe da fullmatch()função é a seguinte:

re.fullmatch(pattern, string, flags=0)Linguagem de código:  Python  ( python )

Nesta sintaxe:

  • patternespecifica uma expressão regular para corresponder.
  • stringespecifica a sequência de entrada.
  • flagsO parâmetro é opcional e o padrão é zero. O flagsparâmetro aceita um ou mais sinalizadores regex . O flagsparâ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 validLinguagem 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 Truese o e-mail for válido ou gera uma ValueErrorexceçã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 TrueLinguagem 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 addressLinguagem de código:  Python  ( python )

Fullmatch vs correspondência de regex Python

Ambas as funções fullmatch()e match()retornam um Matchobjeto 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: PythonLinguagem de código:  Python  ( python )

Neste exemplo, fullmatch()retorna Noneporque o padrão Pythoncorresponde 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 Matchobjeto 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()) # 3Linguagem de código:  Python  ( python )

Saída:

3Linguagem de código:  Python  ( python )

Neste exemplo, o padrão \dcorresponde a um único dígito. A fullmatch()função retorna Noneporque 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.

Deixe um comentário

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