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

Python re 模块Модуль re в 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: Базовое использование - Поиск первого совпадения

Пример

import re

# Поиск в строке первого совпадающего числа
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

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

  1. r'\d+\.\d+'Соответствует одной или нескольким цифрам, за которыми следует точка, затем одна или несколько цифр (формат номера версии).
  2. re.search()Возвращает объект первой позиции совпадения.
  3. result.group()Возвращает содержимое совпавшего текста.
  4. result.start()иresult.end()Возвращает индекс позиции совпадения.

Пример 2: Поиск совпадения в любой позиции

re.search()Он может выполнять поиск в любой позиции строки; это егоre.match()главное отличие.

Пример

import re

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параметр, вы можете изменить поведение сопоставления, например, игнорирование регистра.

Пример

import re

text = "Python — мощный язык программирования"

# Используйте re.IGNORECASE для игнорирования регистра
result = re.search(r'python', text, re.IGNORECASE)

if result:
    print("Найдено:", result.group())  # Вывод: Python

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

找到: Python

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

  • re.IGNORECASEДелает сопоставление нечувствительным к регистру, поэтому оно может сопоставляться с "Python".

Пример 4: Извлечение содержимого группы

Круглые скобки()можно создавать группы для извлечения определённых интересующих частей.

Пример

import re

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)Извлеките содержимое двух групп соответственно.

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

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