Я работаю с расшифровками стенограмм, и у меня проблемы с сопоставлением шаблонов не жадным способом. Он по-прежнему слишком много захватывает и выглядит как жадные матчи.
Расшифровка стенограммы выглядит так:
>> Джон Доу: Привет, я Джон Доу.
>> Привет, я Джейн Доу.
>> Спасибо, что пришли, через две минуты начнем.
>> Сэм Смит: [без звука] Всем доброе утро.
Чтобы найти имена выступающих в >> (ЛЮБОЕ ИМЯ):, я написал
pattern=re.compile(r'>>(.*?):')
transcript='>> John doe: Hello, I am John Doe. >> Hello, I am Jane Doe. >> Thank you for coming, we will start in two minutes. >> Sam Smith: [no audio] Good morning, everyone.'
re.findall(pattern, transcript)
Я ожидал 'John Doe'
и 'Sam Smith'
, но это дает мне 'John Doe'
и 'Hello, I am Jane Doe. >> Thank you for coming, we will start in two minutes. >> Sam Smith'
Я сбит с толку, потому что .*?
не жадный, который (я думаю) должен уметь захватывать 'Sam Smith'
. Как мне исправить код, чтобы он собирал только то, что указано >> (WHATEVER NAME) :? Кроме того, я использую Python 3.6.
Спасибо!
>> ([^>:])*:
, если только вы не собираетесь использовать>
в имени - person Adrian Shum   schedule 02.05.2018