Вот пример типа текстового файла, который я пытаюсь найти (с именем usefile):
ДОК звукоподражания
ДОК бла бла
бла ДОК бла
DOCK
бла-бла-бла
звукоподражания
бла-бла-бла
бла-бла-док
ДОК бла-бла
ДОК бла
звукоподражания
Я использую оператор finditer, чтобы найти все между DOCK и звукоподражанием следующим образом:
re.finditer(r'((dock)(.+?)(onomatopoeia))', usefile, re.I|re.DOTALL)
Очевидно, Dock - это гораздо более распространенное слово, чем звукоподражание, и я хочу перехватить текст только между первым экземпляром Dock и до звукоподражания. Регулярное выражение, которое я использую выше, захватывает текст между первым экземпляром Dock и останавливается, когда он достигает ономатопоэю, поэтому я могу получить звукоподражание Dock Dock Dock Dock Dock, когда мне действительно нужна только ономатопея Dock.
Чтобы было ясно, что я хочу сверху, это:
1. ДОК ономатопея
2. ДОК-бла-бла-бла-ономатопея
3. ДОК-бла-ономатопея
Есть ли способ найти звукоподражание и перейти к первому случаю док-станции, или лучший способ решить мою проблему?
Спасибо!