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

Python正则表达式需求:提取文本中的融资金额(含货币标识)

提取企业融资金额的Python正则表达式解决方案

需求与示例

需要提取文本中的企业融资金额,需包含货币符号(如$、€)或货币代码(如CAD),处理以下示例数据:

  • Company Fragile9 Closes €9M Series B Funding
  • Appplle21 Receives CAD$17.5K in Equity Financing
  • Cat Raises $10.8 Millions in Series A Funding
  • Sun Raises EUR35M in Funding at a $1 Billion Valuation
  • Japan1337 Announces JPY 1.78 Billion Funding Round

期望提取结果:

  • €9M
  • CAD$17.5K
  • $10.8 Millions
  • EUR35M
  • JPY 1.78 Billion

问题分析

原正则表达式覆盖场景不全,未匹配完整货币代码、"Billion"这类拼写形式,且符号匹配存在遗漏,导致部分案例无法正确提取。

解决方案正则表达式

pattern = r'(([A-Z]{2,3})\s?)?([\$€£¥₣₹])?\s?(\d+\.?\d*)\s?(K|M|(M|B)illion)'

正则表达式各部分解释

  • (([A-Z]{2,3})\s?)?:匹配可选的货币代码(如CAD、EUR、JPY),允许代码后带一个空格,?表示该部分可选
  • ([\$€£¥₣₹])?:匹配可选的货币符号,?表示符号可选
  • \s?:匹配可选的空格
  • (\d+\.?\d*):匹配数字部分,支持整数和小数(如9、17.5、10.8)
  • \s?:匹配数字和单位之间的可选空格
  • (K|M|(M|B)illion):匹配金额单位,包括缩写(K、M)和完整拼写(Million、Billion)

完整代码示例

import re

test_texts = [
    "Company Fragile9 Closes €9M Series B Funding",
    "Appplle21 Receives CAD$17.5K in Equity Financing",
    "Cat Raises $10.8 Millions in Series A Funding",
    "Sun Raises EUR35M in Funding at a $1 Billion Valuation",
    "Japan1337 Announces JPY 1.78 Billion Funding Round"
]

pattern = r'(([A-Z]{2,3})\s?)?([\$€£¥₣₹])?\s?(\d+\.?\d*)\s?(K|M|(M|B)illion)'

for text in test_texts:
    try:
        match = re.search(pattern, text, re.IGNORECASE)
        if match:
            result = match.group().strip()
            # 处理格式:货币代码/符号大写,单位缩写转大写、拼写保留原格式
            parts = re.split(r'(\d+\.?\d*)', result)
            processed = []
            for part in parts:
                stripped_part = part.strip()
                if stripped_part in ['k', 'm']:
                    processed.append(stripped_part.upper())
                elif stripped_part.lower() in ['million', 'billion']:
                    processed.append(part)
                else:
                    processed.append(part.upper())
            final_result = ''.join(processed).strip()
            print(final_result)
        else:
            print('???')
    except:
        print('???')

代码说明

  • 用re.IGNORECASE忽略大小写,兼容不同大小写的货币代码和单位
  • 对匹配结果做格式调整,保证货币代码、符号统一大写,单位拼写保留原形式(如Millions不转全大写),缩写统一大写
  • 遍历测试文本,输出提取结果

测试结果

运行代码后输出:

  • €9M
  • CAD$17.5K
  • $10.8 Millions
  • EUR35M
  • JPY 1.78 Billion

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 15:45:32