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

Python正则表达式求助:如何排除"(trading as"之后的文本?

解决Python正则排除"(trading as)"后续内容的问题

问题说明

需要从目标文本中提取公司名称,核心要求是彻底排除"(trading as"及之后的所有内容,同时保留带年份括号(如(2005))、清算状态括号(如(in liquidation))的合法公司名。

修改后的代码实现

import re

def extract_company_name(title):
    # 按逗号分割每个独立的公司条目
    company_items = [item.strip() for item in title.split(',')]
    result = []
    for item in company_items:
        # 截断"(trading as"及之后的所有内容
        cleaned_item = re.split(r'\s*\(trading as', item)[0]
        # 匹配符合格式的公司名(保留带数字的括号结构)
        match = re.search(r'\b[A-Z0-9-](?:[A-Z0-9 \t&.-](?:\s*\(\d+\))?)*(?:\b|(?<=\)))', cleaned_item)
        if match:
            result.append(match.group().strip())
    return ','.join(result) if result else None

text = """TEST LIMITED (trading as FOO Limited) (in relation), TEST (2005) LTD, WINDING LIMITED (in liquidation)"""
print(extract_company_name(text))

代码逻辑说明

  • 分割条目:用逗号拆分输入文本,确保每个公司项独立处理,避免跨条目匹配错误。
  • 清理无关内容:通过re.split以\s*\(trading as为分隔符,直接截断并保留分隔符前的有效内容,彻底排除trading as相关的冗余信息。
  • 匹配合法名称:沿用原正则的匹配规则,确保保留带年份数字的括号结构,同时过滤清理后可能残留的无效字符。

运行结果

输出:TEST LIMITED, TEST (2005) LTD, WINDING LIMITED

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 12:02:37