<p>给定此文件:</p>
<pre><code>XXXX Testing123
YYYY hellow
ZZZZ worldd
AAAA Testing456
BBBB heyyy
YYYY YoYo
</code></pre>
<p>可以对mmap文件使用regex:</p>
^{pr2}$
<hr/>
<p>如果只需要<code>YYYY</code>组,请拆分正则表达式:</p>
^{3}$
<p>如果要丢失前导空格,请使用:</p>
<pre><code> for m in re.finditer(r'^(XXXX.*?)^\s+(YYYY.*?)$', mm, flags=re.M | re.S):
</code></pre>
<p>如果它是一个完全在内存中的文件,您可以跳过<code>mmap</code>,只需使用<code>f.read()</code>将该文件读入内存</p>
<hr/>
<p>通过您的注释,您可以修改regex以更准确地捕获您要查找的内容。在</p>
<p>给定文件:</p>
<pre><code>XXXX Testing123
YYYY hellow
ZZZZ worldd
AAAA Testing456
BBBB heyyy
YYYY YoYo
XXXX Testing123
ZZZZ worldd
AAAA Testing456
BBBB heyyy
YYYY YoYo
XXXX Testing123 2
YYYY hellow
ZZZZ worldd
</code></pre>
<p><a href="https://regex101.com/r/pM4iD1/3" rel="nofollow">Demo regex</a></p>
<p>在Python中:</p>
<pre><code>with open(fn, 'r+') as f:
mm=mmap.mmap(f.fileno(), 0)
for m in re.finditer(r'^XXXX.*\n^\s+(YYYY.*)', mm, flags=re.M ):
print m.group(1)
</code></pre>
<p>印刷品:</p>
<pre><code>YYYY hellow
YYYY hellow
</code></pre>
<p>您还可以使用两个元素<a href="https://docs.python.org/2/library/collections.html#collections.deque" rel="nofollow">deque</a>,并测试每行是否符合所需条件:</p>
^{8}$
<p>印刷品:</p>
<pre><code>deque(['XXXX Testing123\n', ' YYYY hellow\n'], maxlen=2)
deque(['XXXX Testing123 2\n', ' YYYY hellow\n'], maxlen=2)
</code></pre>