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]