Метод re.fullmatch() в 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: Базовое использование - полное совпадение
Пример
# Полностью сопоставить всю строку
text = "hello"
result = re.fullmatch(r'hello', text)
if result:
print("Полное совпадение успешно:", result.group())
Ожидаемый вывод:
完整匹配成功: hello
Пояснение к коду:
re.fullmatch()Требуется, чтобы строка "hello" полностью совпадала с шаблоном "hello".- Совпадение успешно, возвращается объект совпадения.
Пример 2: Случай неудачного полного совпадения
Если в строке есть лишние символы, совпадение не произойдёт.
Пример
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Поддерживает полный синтаксис регулярных выражений.
Пример
# Полное совпадение с цифрами
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Часто используется для проверки того, соответствует ли ввод определённому формату.
Пример
# Проверка формата номера телефона
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
Пример
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: Использование групп
Пример
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
Другие расширения
Модуль re в Python