Вы можете использовать (?:(?:\(\d+:\d+\))[^\(]+){2,}(\(\d+:\d+\).*$)
для извлечения последнего совпадения с вашим шаблоном вместе с extract
Это не будет работать, если в каком-либо диалоговом окне есть скобки.
Пример кадра данных
text
0 (15:38) Hello, how are you? (15:39) I am fine....
extract
df.text.str.extract(r'(?:(?:\(\d+:\d+\))[^\(]+){2,}(\(\d+:\d+\).*$)')
0 (15:40) That's good.
Name: text, dtype: object
В настоящее время, если их меньшекроме трех отдельных частей диалога, он будет заполнен NaN
, но вы можете использовать fillna
для замены пустой строкой, если хотите.
Пример с fillna
text
0 (5:40) Hello there (3:20) Goodbye (3:30) This ...
1 (3:30) Test 2 (5:45) Last text
2 (4:30) Foo (5:18) Bar
df.text.str.extract(r'(?:(?:\(\d+:\d+\))[^\(]+){2,}(\(\d+:\d+\).*$)').fillna('')
0 (3:30) This has 3
1
2