В регулярке укажите что должна быть группа символов без двоеточий ([^:]+
), заканчивающаяся на точку (\.
). Вопрос после +
не ставьте, иначе так и будет находить до первой точки (наименьшую группу).
Пример:
import re
text = "Джексон: текст Джексона. Норрисон: текст Норрисона. еще говорит. дальше говорит. Джексон: текст. Норрисон: опять текст Норрисона. "
result = re.findall(r"Норрисон: ([^:]+\.)", text)
print(result)
Вывод:
['текст Норрисона. еще говорит. дальше говорит.', 'опять текст Норрисона.']
Более общий вариант с извлечением имен:
import re
text = "Джексон: текст Джексона. Норрисон: текст Норрисона. еще говорит. дальше говорит. Джексон: текст. Еще текст Джексона. Норрисон: опять текст Норрисона. "
result = re.findall(r"(\w+): ([^:]+\.)", text)
print(result)
Вывод:
[('Джексон', 'текст Джексона.'), ('Норрисон', 'текст Норрисона. еще говорит. дальше говорит.'), ('Джексон', 'текст. Еще текст Джексона.'), ('Норрисон', 'опять текст Норрисона.')]