擅长:python、mysql、java
<p>+1用于对regex模式使用详细模式</p>
<p>模式开头的<code>.*</code>是贪婪的,所以它试图匹配整行。然后它回溯以匹配target1。模式中的其他所有内容都是可选的,因此将target1与行中的最后一个匹配匹配是成功的匹配。您可以尝试通过添加“?”来使第一个<code>.*</code>不贪婪是这样的:</p>
<pre><code>_pattern = r"""(?x)
^
.*? < add the ?
(?P<target1>
... snip ...
"""
</code></pre>
<p>你能逐步做到吗?在</p>
^{pr2}$
<p><strong>编辑</strong>
还有一个想法:试试看关于芬德尔():</p>
<pre><code>_pattern = r"""(?x)
(?P<target1>
[€$£]
\d{1,3}
[,.]?
\d{0,3}
(?:[,.]\d{3})*
(?P<multiplyer1>[kKmM]?\s?[mM]?)
)
"""
targets = re.findall(_pattern, line)
</code></pre>