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

寻求可提取复杂格式账户名的健壮正则表达式方案

账户名称提取的正则优化需求

我需要从一批PDF文件的表格中提取账户名称,目前用正则实现了部分效果,但需要更健壮的表达式来提取完整名称。

当前匹配结果

测试部分复杂账户名称时,当前正则的匹配情况如下:

<re.Match object; span=(0,22), match='20/36 Advert Inc. -'
<re.Match object; span=(0,14), match='COOLIDGE LLC -'
<re.Match object; span=(0,20), match='YANG STREET CAPITAL '
<re.Match object; span=(0,20), match='United Money Mgmt '
<re.Match object; span=(0,13), match='JQUM (Chex '
<re.Match object; span=(0,5), match='AXEY '
<re.Match object; span=(0,9), match='RIG /COV'

当前使用的正则表达式

company_regex = re.compile(r'^[\w\d\s]+(?:[-/\.\s()]+[\w\d\s.-]+)?\s+')

需要提取的完整账户名称示例

company_1= "20/36 Advert Inc. -New York"
company_2= "COOLIDGE LLC - CHARLOTTE"
company_3= "YANG STREET CAPITAL MANAGEMENT"
company_4= "United Money Mgmt Corp"
company_5= "JQUM (Chex Stanley)"
company_6= "AXEY (Mitsu+XG+JNL)"
company_7= "RIG /Cov Credit"

目标表格格式

账户名称嵌入在如下格式的PDF表格中:

AccountAllocation
20/36 Advert Inc. - New York4.00k
COOLIDGE LLC - CHARLOTTE3.3m
United Money Mgmt Corp7.5m
JQUM (Chex Stanley)$3.8
AXEY (Mitsu+XG+JNL)$75.8k
RIG /Cov Credit100.0k

优化后的正则表达式

针对上述场景,推荐使用以下正则表达式:

company_regex = re.compile(r'^(.+?)(?=\s*(?:\$?\d|$))')

逻辑说明

  • 采用正向预查(?=\s*(?:\$?\d|$)),精准匹配到分配值(以$+数字或直接数字开头)之前的所有内容,自动截断账户名称和分配列的边界。
  • 无需逐个枚举允许的字符,天然覆盖账户名称中包含的空格、/、.、-、()、+等特殊格式,适配所有示例场景。

如果PDF解析后保留了HTML表格结构,也可以直接匹配<td>标签内的内容:

company_regex = re.compile(r'<td>(.+?)</td>')

提取捕获组1的内容即可得到完整账户名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 10:05:36