2016-11-19 2 views
1

Допустим, у нас есть текст, в течение которого некоторые цитаты хранятся в виде:Извлечение из текста с питоном и регулярное выражение

пользователя: цитата

мы можем иметь несколько цитат в тексте.

Agatha Drake: She records her videos from the future? What is she, a 
    f**ing time lord? Is she Michael J. Fox? 

Harvey Spencer: This is just like that one movie where that one guy 
    changed one tiny, little thing in his childhood to stop the girl of 
    his dreams from being a crackhead in the future! 

Как извлечь цитаты (она записывает свои видео с ..., это так же, как этот один фильм ....) из текста в питона?

Я попытался

re.findall('\S\:\s?(.*)', text) 

Но это не делает эту работу.

https://regex101.com/r/vH63Go/1

Как я могу это сделать в Python?

+0

Является ли пользователь всегда в начале строки? ['(? m)^[^: \ n] +: \ s? ((?:. + \ n?) *)'] (https://regex101.com/r/ysr2n7/1) будет моим подход тогда. –

+0

Спасибо @ Шебастиан Проске. это то, что я хотел –

ответ

1

Если ваша строка после последовательного формата пользователя в начале строки и двойной символ новой строки окончание цитаты, вы могли бы использовать это:

(?m)^[^:\n]+:\s?((?:.+\n?)*) 

Он использует режим многострочный и соответствует началу строки , за которыми следуют символы, которые не являются ни :, ни символом новой строки, а затем - :. Затем фиксирует все строки с контентом.

Промежуточная демонстрация на regex101.

 Смежные вопросы

  • Нет связанных вопросов^_^