擅长:python、mysql、java
<p>可以使用多个regex迭代:</p>
<pre><code>import re
results = []
# Get list of numbers
numbers = re.findall('[\d,.]+', 'EUR 1.409,00 $ 409,05 ¥409.50 CNY 1,000.00')
# Parse number
for number in numbers:
dp = ''
ip = number
match = re.search('(?<=[,.])(?:\d{2})$', number)
# Get decimal places
if match:
dp = match.group()
# Extract integer places
ip = number[:match.start()]
# Remove commas and periods from integer
ip = ip.translate(None, ',.')
# Parse float
results.append(float('{}.{}'.format(ip, dp)))
print(results)
</code></pre>
<p>这将导致<code>[1409.0, 409.05, 409.5, 1000.0]</code>。
我敢打赌有一个更方便的正则表达式来实现这一切,但至少它应该对你有用:)</p>