re.finditer() — возвращает итератор с объектами Match, содержащими позиции.
s = "ABCXXDEFXXGHI"
for m in re.finditer(r'XX', s):
print(f"Найдено '{m.group()}' на позиции {m.start()}-{m.end()}")
# Найдено 'XX' на позиции 3-5
# Найдено 'XX' на позиции 8-10
Методы объекта Match:
m.group() — найденная строка
m.group(1) — первая группа
m.start() — начальная позиция
m.end() — конечная позиция (не включая)