Python, модуль re, найти вхождение ДО одного из шаблонов

Есть код:

import re

a = 'srgdefasggabcafasdfa'
print(re.findall(r'^([^.]*)def*|abc*', a))

В нем я хочу найти строку ДО первого же вхождения подстроки 'abc' или подстроки 'def'. В выводе имею:

['srg', '']

Откуда берется '' в списке?

И как теперь сделать так, что бы мне вывелась не сама подстрока, а индекс последнего элемента подстроки (то есть я хочу получить индекс 2, поскольку подстрока, которую я ищу- 'srg' идет от 0го элемента оригинальной строки до 2го элемента)?


Ответы (1 шт):

Автор решения: Amgarak

Можно например через search или match() поискать первое вхождение строки. А индекс можно просто через длину полученной строки-1 получить, всё равно мы её от начало строки берём.

import re

a = 'srgasggabcafasdfa'
value = re.search(r'(.+?)(?=abc|def)', a)
if value:
    result = value.group()
    print(result, len(result) - 1)

Вывод:

srgasgg 6

[Program finished]
→ Ссылка