<p>您还可以匹配文件中数据的结构,以确保它存在</p>
<pre><code>^\d+\r?\n\d{2}:\d{2}:\d{2}\.\d{3} >.*\r?\n((?:(?!\d+\r?\n\d\d:).*(?:\r?\n|$))*)
</code></pre>
<p><strong>消除</strong></p>
<ul>
<li><code>^</code>字符串的开头</li>
<li><code>\d+\r?\n\d{2}:\d{2}:\d{2}\.\d{3} >.*</code>匹配1+个数字、换行符和类时间模式</li>
<li><code>\r?\n</code>匹配换行符</li>
<li><code>(</code>捕获<strong>第1组</strong>
<ul>
<li><code>(?:</code>非捕获组
<ul>
<li><code>(?!\d+\r?\n\d\d:).*(?:\r?\n|$)</code>如果不是以类似时间的模式开始,则匹配整行</li>
</ul>
</li>
<li><code>)*</code>关闭组并重复0+次以匹配所有行</li>
</ul>
</li>
<li><code>)</code>关闭组1</li>
</ul>
<p>参见在线<a href="https://regex101.com/r/HWsX6f/1" rel="nofollow noreferrer">regex demo</a><a href="https://ideone.com/decFc9" rel="nofollow noreferrer">Python demo</a></p>
<p>匹配将由列表中的<a href="https://docs.python.org/3/library/re.html#re.findall" rel="nofollow noreferrer">re.findall</a>返回的捕获组中的所有时间后文本模式</p>
<p>然后将所有部分合并为一个空字符串,用空格替换换行符,并在一个点后拆分为一个或多个空格字符</p>
<p><strong>示例代码</strong></p>
<pre><code>regex = r"^\d+\r?\n\d{2}:\d{2}:\d{2}\.\d{3} >.*\r?\n((?:(?!\d+\r?\n\d\d:).*(?:\r?\n|$))*)"
content = [i for i in re.split(r"(?<=\.)\s+", re.sub(r"[\r\n]+", " ", "".join(re.findall(regex, text, re.M)))) if i]
print(content)
</code></pre>
<p><strong>输出</strong></p>
<pre><code>["In this lecture, we're going to talk about pattern matching in strings using regular expressions.", 'Regular expressions or regexes are written in a condensed formatting language.']
</code></pre>