07 Июл 2023
2 мин
3668

Поиск всех вхождений подстроки в строке в Python

В Python есть несколько способов поиска подстроки в строке. Например, можно использовать методы find() и rfind(), которые возвращают индекс первого вхождения

Содержание

В Python есть несколько способов поиска подстроки в строке. Например, можно использовать методы find() и rfind(), которые возвращают индекс первого вхождения подстроки и индекс последнего вхождения подстроки соответственно.

Пример

s = "Привет, мир! Мир - прекрасен"
print(s.find('мир'))  # 8
print(s.rfind('мир')) # 13

Однако, эти методы не предоставляют информации обо всех вхождениях подстроки в строку. Например, если необходимо найти все вхождения слова «мир» в предложении «Привет, мир! Мир — прекрасен», то find() и rfind() не смогут с этим справиться.

В этом случае можно использовать регулярные выражения или цикл для прохождения по строке и поиска всех вхождений подстроки.

Использование регулярных выражений

Модуль re в Python предоставляет функцию finditer(), которая возвращает итератор, содержащий все вхождения подстроки в строке.

Пример

import re

s = "Привет, мир! Мир - прекрасен"
matches = re.finditer('мир', s)
indices = [match.start() for match in matches]

print(indices)  # [8, 13]

Использование цикла

Можно использовать цикл и метод find() для поиска всех вхождений подстроки в строке.

Пример

s = "Привет, мир! Мир - прекрасен"
substring = 'мир'
indices = []
index = -1  # начинаем поиск с начала строки

while True:
    # находим следующее вхождение подстроки
    index = s.find(substring, index + 1)

    # если вхождение не найдено, выходим из цикла
    if index == -1:
        break

    # добавляем индекс в список
    indices.append(index)

print(indices)  # [8, 13]

Таким образом, с помощью регулярных выражений или цикла можно найти все вхождения подстроки в строке.

Содержание

Добавить комментарий

Определи профессию по рисунку