【问题标题】:Regex: Extract amounts in Euro正则表达式:提取欧元金额
【发布时间】:2022-01-04 08:44:54
【问题描述】:

我需要一个 Python 正则表达式,它以欧元为单位提取金额。例如:

  • 99 欧元
  • 99.99 欧元
  • 99,99 欧元
  • 100

我的灵感来自here。基于此,我构建了以下正则表达式:

^((\d[\d.\s,]*)(?:\s(?:euro|€|Euro))|\d)$

如果您想查看更多示例,请参阅demo。正则表达式尚未完成。我面临的问题是它与完整的字符串不匹配。

也许你能帮我解决这个问题?我不是正则表达式专家!

【问题讨论】:

  • 您想匹配100,没有任何货币指示符吗?如果是这样,那么我们如何知道没有标签的数字的货币?
  • 您的示例中的那些尾随空格怎么样。是不是打错字了?
  • 我想知道是否有人会输入 100 欧元。
  • ^(?:€ *)?(\d(?:[. ,]*\d)*)(?: (?:euro|€|Euro))? *$

标签: python regex matching


【解决方案1】:

你可以使用

^(?:€ *)?(\d(?:[. ,]*\d)*)(?: (?:[eE]uro|€))? *$

注意:如果您针对独立字符串进行测试,您可以用\s(任何一个空格)或\s+(一个或多个空格)替换所有文字空格。

详情

  • ^ - 字符串开头
  • (?:€ *)? - 和零个或多个空格的可选序列
  • (\d(?:[. ,]*\d)*)
  • (?: (?:[eE]uro|€))? - 一个可选的空格序列(在其后添加* 使其匹配零个或多个空格)、euroEuro
  • * - 零个或多个空格
  • $ - 字符串结束。

请参阅regex demo

【讨论】:

    猜你喜欢
    • 2020-10-09
    • 2011-03-12
    • 1970-01-01
    • 2020-10-16
    • 2021-01-17
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 2022-08-18
    相关资源
    最近更新 更多