Ответ
Функции re.search()
и re.match()
из модуля re
в Python используются для поиска совпадений с регулярными выражениями, но их ключевое отличие заключается в области поиска:
re.match(pattern, string)
: Ищет совпадение только в начале строки. Если шаблон не совпадает с началом строки, функция немедленно возвращаетNone
.- Применение: Идеально подходит для проверки, начинается ли строка с определенного шаблона, например, для валидации формата префикса.
re.search(pattern, string)
: Ищет первое совпадение с шаблоном по всей строке. Сканирует строку слева направо и возвращает первое найденное совпадение.- Применение: Используется для поиска подстроки, соответствующей шаблону, в любом месте строки.
Пример:
import re
text = "Python is awesome"
# re.match() ищет только в начале
match_is = re.match(r"is", text)
print(f"re.match('is', text): {match_is}") # None, так как 'is' не в начале
match_python = re.match(r"Python", text)
print(f"re.match('Python', text): {match_python}") # <re.Match object; span=(0, 6), match='Python'>
# re.search() ищет по всей строке
search_is = re.search(r"is", text)
print(f"re.search('is', text): {search_is}") # <re.Match object; span=(7, 9), match='is'>
search_awesome = re.search(r"awesome", text)
print(f"re.search('awesome', text): {search_awesome}") # <re.Match object; span=(10, 17), match='awesome'>
Когда использовать:
- Используйте
re.match()
, когда вам нужно убедиться, что строка начинается с определенного шаблона. - Используйте
re.search()
, когда вам нужно найти первое вхождение шаблона в любом месте строки.