<p>我建议使用<code>^\s*(\d+)\*?\s+(\d+)</code>,这使得文字<code>*</code>字符可以与<code>?</code>一起选择。我也让你的第一次太空跑可选的;允许数字与行首对齐而不填充似乎是合理的(但如果愿意,可以将<code>*</code>改回<code>+</code>)。最后,<code>\d</code>等价于<code>[0-9]</code></p>
<p>完整代码:</p>
<pre><code>import re
output4a = """
54 1% 2.11 MB 52 min 0.0 49.0 0.0 test1 test1_4.1.6_Win_x86_install_en-US.tar
55 17% 31.89 MB 1 min 0.0 1263.0 0.0 test344 base-2.10.6-x86_64.dmg
56 17% 31.18 MB 1 min 0.0 1267.0 0.0 test2 base-2.10.4-x86_64.dmg
57 15% 27.12 MB 2 min 0.0 1066.0 0.0 test23 base-2.10.6-setup.exe
58 20% 32.16 MB 1 min 0.0 1196.0 0.0 test232 base-2.10.8-x86_64-2.dmg
59* 0% None 599 days 0.0 0.0 0.0 test12 base.1.2_Linux_x86_deb.tar.gz
60 14% 26.31 MB 2 min 0.0 1243.0 0.0 test23 base-2.10.4-setup-2.exe
61 0% None Unknown 0.0 0.0 None Idle base-0.9.24.1.exe
Sum: 150.8 MB 0.0 6084.0"""
id_percentage3 = re.findall(
r'^\s*(\d+)\*?\s+(\d+)',
output4a, flags=re.MULTILINE
)
for a, b in id_percentage3:
print(a, b)
</code></pre>
<p>输出:</p>
<pre class="lang-none prettyprint-override"><code>54 1
55 17
56 17
57 15
58 20
59 0
60 14
61 0
</code></pre>