Это идеальная работа для регулярных выражений.
import re
def subStringMatchExact(target, key):
regex = re.compile(re.escape(key))
return tuple(match.start() for match in regex.finditer(target))
Обратите внимание, что это находит только неперекрывающиеся совпадения. Если вы также хотите найти совпадающие совпадения:
def subStringMatchExact(target, key):
regex = re.compile("(?=" + re.escape(key) + ")")
return tuple(match.start() for match in regex.finditer(target))
Конечно, если вы не хотите, чтобы результат был кортежем, вы можете просто удалить tuple
из последней строки и заставить вашу функцию возвращать более эффективный генератор.