You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则表达式筛选欧元符号后的小数数字?

解决欧元符号后小数数字的提取问题

你原来的正则表达式只匹配了欧元符号后的整数开头部分,没有覆盖千分位分隔符(.)和小数部分(,xx),所以没法完整提取目标数字。

修正后的正则表达式

使用以下正则可以精准匹配符合格式的欧元金额:

€\s?(\d{1,3}(?:\.\d{3})*,\d{2})

各部分含义:

  • €\s?:匹配欧元符号,后面可选空格(兼容无空格的情况)
  • \d{1,3}:匹配开头1-3位数字
  • (?:\.\d{3})*:匹配0或多个「点+三位数字」的千分位结构(非捕获组,不单独提取)
  • ,\d{2}:匹配逗号加两位小数

完整代码示例

import re

test_string = """Crownless 14kg 10 Sweet CR Klasse I € 7,00 € 3.962,00
706 Appels Royal Gala 13kg 60/65 Generica PL Klasse I € 4,68 € 3.304,08
598 Peen Waspeen 14x1lkg 200-400 Generica BE Klasse I € 6,30 3.767,40
Order number : 76462 Loading date : 18-11-21 Incoterm: : FOT
Your ref. : SCHOOLFRUIT Delivery date"""

pattern = re.compile(r'€\s?(\d{1,3}(?:\.\d{3})*,\d{2})')
matches = pattern.finditer(test_string)    

for match in matches:
    print(match.group(1))

运行结果

7,00
3.962,00
4,68
3.304,08
6,30

注:第三行的3.767,40因前面无欧元符号,不会被提取,符合需求。

内容的提问来源于stack exchange,提问作者mightycode Newton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 18:45:48