擅长:python、mysql、java
<p>在调用<code>f.read()</code>之后,没有更多的字节可读取,因此对<code>f.read()</code>的第二次调用将返回一个空字符串。存储f.read()的结果,而不是读取两次:</p>
<pre><code>s = f.read()
f10 = re.findall( b'\x03\x00\x00\x10''(.*?)''\xF7\x00\xF0', s)
f11 = re.findall( b'\x03\x00\x00\x11''(.*?)''\xF7\x00\xF0', s)
</code></pre>
<p>您可能还希望只扫描一次数据,找到两个表达式:</p>
<pre><code>matches = re.findall( b'\x03\x00\x00[\x10\x11]''(.*?)''\xF7\x00\xF0', s)
</code></pre>
<p>如果您的文件包含字节<code>'\x03\x00\x00\x10\x03\x00\x00\x11_\xF7\x00\xF0'</code>,您提出的方法将找到两个重叠的匹配(<code>\x03\x00\x00\x11_</code>和<code>_</code>),而单扫描方法只找到一个匹配。你知道吗</p>