Метод Python re.finditer()

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


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

Он возвращает итератор, каждый элемент которого является объектом match, что позволяет обрабатывать результаты сопоставления по одному.

Определение термина: find iterЭто означает «итератор поиска».


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

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

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

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

  • pattern: Шаблон регулярного выражения
  • string: Строка для поиска
  • flags: Необязательные флаги регулярного выражения

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

  • Возвращаемое значение: Возвращает итератор, каждый элемент которого является объектом match.
  • Особенности: Подходит для обработки большого количества результатов сопоставления, экономя память.

Примеры

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

Пример

import re

text = "3 яблока, 5 апельсинов, 8 бананов"

# Итерация для поиска всех чисел
for match in re.finditer(r'\d+', text):
    print(f"Найдено: {match.group()} Позиция: {match.start()}-{match.end()}")

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

找到: 3 位置: 0-1
找到: 5 位置: 4-5
找到: 8 位置: 8-9

Пример 2: Обработка списка email

Пример

import re

text = "Свяжитесь с [email protected] или [email protected] для получения помощи"

# Найти и обработать каждый адрес электронной почты
for match in re.finditer(r'(\w+)@(\w+\.\w+)', text):
    print(f"Полное совпадение: {match.group()}")
    print(f" Имя пользователя: {match.group(1)}")
    print(f" Домен: {match.group(2)}")
    print(f" Позиция: {match.start()}-{match.end()}")

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

完整: [email protected]
  用户名: test
  域名: example.com
  位置: 2-16
完整: [email protected]
  用户名: admin
  域名: test.org
  位置: 17-30

Пример 3: Сравнение с re.findall()

Пример

import re

text = "a1b2c3d4"

# findall возвращает список строк
print("findall:", re.findall(r'\d', text))

# finditer возвращает итератор
print("finditer:", [m.group() for m in re.finditer(r'\d', text)])

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

findall: ['1', '2', '3', '4']
finditer: ['1', '2', '3', '4']

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

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