如何用Regex从银行对账单提取代码后公司名及USD后金额?
用正则提取银行对账单的公司名称和美元金额
没问题,我来帮你拆解这个需求,用正则就能搞定~先分析下你的数据模式,这样能更精准地写表达式:
从你给的示例数据来看:
- 公司名称总是跟在一串字母数字混合的长代码(比如
2019043000193299、665FGMPE175486L)后面,直到遇到USD标识为止; - 美元金额总是紧跟在
USD后面,格式是整数或带小数的数字。
一、提取代码后的完整公司名称
针对这个需求,我们用非贪婪匹配来精准捕捉代码和后续的公司名称,正则表达式如下:
(\w{12,18})\s+(.+?)\s+USD
(\w{12,18}):捕捉12到18位的字母数字代码(你可以根据实际代码长度调整范围);\s+:匹配代码和公司名称之间的空格;(.+?):非贪婪匹配公司名称内容,直到遇到下一个USD前的空格(避免匹配过多无关内容);\s+USD:匹配终止标识USD前的空格和USD本身。
二、提取USD标识后的美元金额
提取金额的正则更直接,专门捕捉USD后的数字即可:
USD\s+(\d+\.?\d*)
USD\s+:匹配USD和后面的空格;(\d+\.?\d*):捕捉整数或带小数的金额(支持1000、1000.95这类常见格式)。
三、Python示例代码
如果你用Python处理,可以直接用re模块批量提取,代码如下:
import re # 你的原始银行对账单数据 data = "CITECH CO., 2019043000193299 CITECH CO.,LT CITECH CO.,LTD USD 1000 YAMAHA MUSIC 665FGMPE175486L YAMAHA MUSIC M YAMAHA MUSIC MANUFACTURING ASIA, USD 1000.95 CONTINENTAL AUT 1599875156FA CONTINENTAL AUTOM CONTINENTAL AUTOMOTIVE ROMANIA SRL USD 2000.1 CONTINENTAL A X0691580D3E601 CONTINENTAL AUT CONTINENTAL AUTOMOTIVE COMP (I) P L USD 2000.55" # 提取公司名称和对应代码 company_pattern = re.compile(r'(\w{12,18})\s+(.+?)\s+USD') company_matches = company_pattern.findall(data) print("提取的公司信息:") for code, name in company_matches: print(f"代码:{code},公司名称:{name.strip()}") # 提取美元金额 amount_pattern = re.compile(r'USD\s+(\d+\.?\d*)') amount_matches = amount_pattern.findall(data) print("\n提取的美元金额:") for amount in amount_matches: print(f"${amount}")
运行这段代码后,就能得到你需要的两类数据啦。如果实际数据里的代码长度有变化,只需要调整正则里{12,18}的数字范围就行。
内容的提问来源于stack exchange,提问作者JOHN
相关产品推荐
相关产品推荐

