Функция fullmatch() модуля re в Python с примерами
- Что такое функция полного соответствия регулярных выражений в Python?
- Пример с функцией fullmatch() в Python
- Отличие fullmatch() от match() в Python
- Функция fullmatch() по сравнению с search() в Python
Что такое функция полного соответствия регулярных выражений в Python?
Функция regex fullmatch() модуля re используется в Python для сопоставления всей строки с регулярным выражением. Она возвращает объект Match, если вся строка соответствует шаблону поиска регулярного выражения, или None в противном случае.
Синтаксис функции fullmatch() следующий:
re.fullmatch(pattern, string, flags=0)
В этом синтаксисе:
- pattern определяет регулярное выражение для сопоставления.
- string указывает входную строку.
- Параметр flags является необязательным и по умолчанию равен нулю. Он принимает один или несколько флагов регулярных выражений и изменяет способ соответствия механизма регулярных выражений шаблону.
Пример с функцией fullmatch() в Python
В следующем примере функция fullmatch() используется для проверки адреса электронной почты:
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')
Выход:
The email "[email protected]" is valid
Ниже определяется функция, которая использует функцию fullmatch() для проверки адреса электронной почты. Она возвращает True, если электронное письмо действительно, или в противном случае вызывает исключение ValueError:
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
И вы можете использовать функцию is_email() для проверки электронного письма следующим образом:
if __name__ == '__main__': try: if is_email('no-reply@pythontutorial'): print('The email is valid') except ValueError as e: print(e)
Выход:
The no-reply@pythontutorial is not a valid email address
Отличие fullmatch() от match() в Python
Функции fullmatch() и match() возвращают объект Match, если обнаруживают совпадение.
Функция fullmatch() сопоставляет всю строку с шаблоном, а функция match() находит совпадение только в начале строки.
См. следующий пример:
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())
Выход:
match: Python
В этом примере функция fullmatch() возвращает None, поскольку шаблон Python соответствует только началу строки, а не всей строке.
С другой стороны, функция match() сопоставляет шаблон в начале строки и возвращает совпадение.
Функция fullmatch() по сравнению с search() в Python
Функции fullmatch() и search() возвращают объект Match, если обнаруживают совпадение с шаблоном в строке. Однако функция fullmatch() соответствует всей строке, а функция search() — в любом месте строки.
Например:
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
Выход:
3
В этом примере шаблон \d соответствует одной цифре. Функция fullmatch() возвращает None, поскольку вся строка «Python 3» не соответствует.
Однако функция search() возвращает совпадение, поскольку ей удалось найти цифру 3 в конце строки.