Метод re.search() в Python
re.search()— это Pythonreмодуль, используемый дляпоиска шаблоновфункция, которая в строкесканирует и находитпервую позицию, соответствующую указанному регулярному выражению.
иre.match()В отличие от,re.search()Не требуется, чтобы совпадение было с начала строки; совпадение будет найдено в любой позиции строки.
Значение слова: searchозначает искать и находить.
Базовый синтаксис и параметры
re.search()является функцией уровня модуля, напрямую черезreвызов модуля.
Формат синтаксиса
re.search(pattern, string, flags=0)
Описание параметра
- pattern:
- Тип: строка (str)
- Описание: шаблон регулярного выражения для сопоставления.
- string:
- Тип: строка (str)
- Описание: строка для поиска, в которой нужно найти совпадение.
- флаги:
- Тип: целое число (int, необязательно)
- Описание: флаги регулярного выражения, используемые для управления режимом сопоставления. Например
re.IGNORECASE、re.MULTILINEи т. д.
Описание функций
- Возвращаемое значение: если совпадение найдено, возвращает
matchобъект; если совпадение не найдено, возвращаетNone。 - Результат: возвращает информацию о позиции первого совпадения, включая совпавшее содержимое, начальную позицию и конечную позицию.
Примеры
Давайте досконально освоим с помощью серии примеров от простых к сложнымre.search()использование.
Пример 1: Базовое использование - Поиск первого совпадения
Пример
# Поиск в строке первого совпадающего числа
text = "Python 3.9 — самая часто используемая версия"
result = re.search(r'\d+\.\d+', text)
if result:
print("Найдено совпадение:", result.group()) # Вывод: 3.9
print("Позиция начала совпадения:", result.start()) # Вывод: 7
print("Позиция конца совпадения:", result.end()) # Вывод: 10
Ожидаемый вывод:
找到匹配: 3.9 匹配起始位置: 7 匹配结束位置: 10
Пояснение к коду:
r'\d+\.\d+'Соответствует одной или нескольким цифрам, за которыми следует точка, затем одна или несколько цифр (формат номера версии).re.search()Возвращает объект первой позиции совпадения.result.group()Возвращает содержимое совпавшего текста.result.start()иresult.end()Возвращает индекс позиции совпадения.
Пример 2: Поиск совпадения в любой позиции
re.search()Он может выполнять поиск в любой позиции строки; это егоre.match()главное отличие.
Пример
text = "Мой номер телефона 138-1234-5678, его номер телефона 139-9876-5432"
# Найти первый номер телефона
result = re.search(r'\d{3}-\d{4}-\d{4}', text)
if result:
print("Первый номер телефона:", result.group())
Ожидаемый вывод:
第一个手机号: 138-1234-5678
Пояснение к коду:
\d{3}-\d{4}-\d{4}Соответствует китайскому формату номера телефона (3 цифры - 4 цифры - 4 цифры).re.search()Возвращает результат, как только найдено первое совпадение; поиск не продолжается.
Пример 3: Использование флагов для игнорирования регистра
Используяflagsпараметр, вы можете изменить поведение сопоставления, например, игнорирование регистра.
Пример
text = "Python — мощный язык программирования"
# Используйте re.IGNORECASE для игнорирования регистра
result = re.search(r'python', text, re.IGNORECASE)
if result:
print("Найдено:", result.group()) # Вывод: Python
Ожидаемый вывод:
找到: Python
Пояснение к коду:
re.IGNORECASEДелает сопоставление нечувствительным к регистру, поэтому оно может сопоставляться с "Python".
Пример 4: Извлечение содержимого группы
Круглые скобки()можно создавать группы для извлечения определённых интересующих частей.
Пример
text = "Электронная почта пользователя: [email protected]"
# Используйте группы для извлечения имени пользователя и домена
result = re.search(r'(\w+)@(\w+\.\w+)', text)
if result:
print("Полное совпадение:", result.group()) # [email protected]
print("Группа 1:", result.group(1)) # user
print("Группа 2:", result.group(2)) # example.com
Ожидаемый вывод:
完整匹配: [email protected] 第1个分组: user 第2个分组: example.com
Пояснение к коду:
- Круглые скобки
()создайте две группы. result.group(1)иresult.group(2)Извлеките содержимое двух групп соответственно.
Другие расширения
Модуль re в Python