Метод re.fullmatch() в Python

Python re 模块Модуль re в Python


re.fullmatch()является Pythonreмодульная функция, используемая дляполного сопоставлениявсей строки.

иre.match()В отличие от,re.fullmatch()требуется, чтобы вся строка полностью соответствовала регулярному выражению, а не только совпадала с начала.

Значение слова: full matchозначает полное совпадение.


Базовый синтаксис и параметры

re.fullmatch()является функцией уровня модуля, вызываемой напрямую черезreмодуль.

Формат синтаксиса

re.fullmatch(pattern, string, flags=0)

Описание параметра

  • pattern:
    • Тип: строка (str)
    • Описание: шаблон регулярного выражения для сопоставления.
  • string:
    • Тип: строка (str)
    • Описание: строка для сопоставления.
  • флаги:
    • Тип: целое число (int, необязательно)
    • Описание: флаги регулярного выражения.

Описание функций

  • Возвращаемое значение: Если вся строка совпадает, возвращаетmatchобъект; в противном случае возвращаетNone。
  • Особенность: требует, чтобы строка полностью совпадала от начала до конца, дополнительные символы не допускаются.

Примеры

Давайте освоим это на серии примеровre.fullmatch()использование.

Пример 1: Базовое использование - полное совпадение

Пример

import re

# Полностью сопоставить всю строку
text = "hello"

result = re.fullmatch(r'hello', text)

if result:
    print("Полное совпадение успешно:", result.group())

Ожидаемый вывод:

完整匹配成功: hello

Пояснение к коду:

  • re.fullmatch()Требуется, чтобы строка "hello" полностью совпадала с шаблоном "hello".
  • Совпадение успешно, возвращается объект совпадения.

Пример 2: Случай неудачного полного совпадения

Если в строке есть лишние символы, совпадение не произойдёт.

Пример

import re

text = "hello world"

# Попытаться полностью сопоставить "hello"
result = re.fullmatch(r'hello', text)

if result:
    print("Совпадение успешно:", result.group())
else:
    print("Сопоставление не удалось: строка не точно равна 'hello'")

Ожидаемый вывод:

匹配失败: 字符串不是完全等于 'hello'

Пояснение к коду:

  • Строка "hello world" содержит больше символов, поэтому она не может полностью совпасть с "hello".
  • В этом случае,fullmatchвозвращаетNone。

Пример 3: Использование шаблонов регулярных выражений

fullmatchПоддерживает полный синтаксис регулярных выражений.

Пример

import re

# Полное совпадение с цифрами
text = "12345"

result = re.fullmatch(r'\d+', text)

if result:
    print("Совпадение цифр:", result.group())

# Полное совпадение с буквами
text2 = "abc"

result2 = re.fullmatch(r'[a-z]+', text2)

if result2:
    print("Совпадение с буквой:", result2.group())

Ожидаемый вывод:

数字匹配: 12345
字母匹配: abc

Пример 4: Проверка фиксированных форматов

fullmatchЧасто используется для проверки того, соответствует ли ввод определённому формату.

Пример

import re

# Проверка формата номера телефона
phone = "138-1234-5678"

result = re.fullmatch(r'\d{3}-\d{4}-\d{4}', phone)

if result:
    print(f"Формат номера телефона {phone} корректен")
else:
    print(f"Формат номера телефона {phone} некорректен")

# Проверка формата электронной почты
email = "[email protected]"

result2 = re.fullmatch(r'\w+@\w+\.\w+', email)

if result2:
    print(f"Формат электронной почты {email} корректен")
else:
    print(f"Формат электронной почты {email} некорректен")

Ожидаемый вывод:

手机号 138-1234-5678 格式正确
邮箱 [email protected] 格式正确

Пояснение к коду:

  • fullmatchОчень подходит для сценариев проверки данных.
  • Совпадение будет успешным только тогда, когда строка полностью соответствует формату.

Пример 5: Сравнение match и fullmatch

Пример

import re

text = "hello world"

# match выполняет поиск совпадения только с начала строки
match_result = re.match(r'hello', text)

# fullmatch требует полного совпадения
fullmatch_result = re.fullmatch(r'hello', text)

print("match result:", match_result.group() if match_result else None)
print("fullmatch result:", fullmatch_result.group() if fullmatch_result else None)

print("-" * 20)

# Попробовать полностью сопоставить всю строку
text2 = "hello"

match = re.match(r'hello', text2)
fullmatch_result2 = re.fullmatch(r'hello', text2)

print("совпадение:", match_result2.group() if match_result2 else None)
print("полное совпадение:", fullmatch_result2.group() if fullmatch_result2 else None)

Ожидаемый вывод:

match 结果: hello
fullmatch 结果: None
--------------------
match 结果: hello
fullmatch 结果: hello

Пояснение к коду:

  • re.match()Достаточно совпадения с начала строки; полное совпадение не требуется.
  • re.fullmatch()Требуется полное совпадение всей строки от начала до конца.

Пример 6: Использование групп

Пример

import re

text = "2024-04-02"

# Используйте группы для полного совпадения даты
result = re.fullmatch(r'(\d{4})-(\d{2})-(\d{2})', text)

if result:
    print("Полное совпадение:", result.group())
    print("Год:", result.group(1))
    print("Месяц:", result.group(2))
    print("День:", result.group(3))

Ожидаемый вывод:

完整匹配: 2024-04-02
年: 2024
月: 04
日: 02

Python re 模块Модуль re в Python

Другие расширения