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

如何使用正则表达式从指定格式文本中提取字母数字ID与对应描述

正则提取字母数字ID与对应描述实现方案

原有代码问题

原有正则r"\w+\.\d+"存在明显逻辑缺陷,无法满足匹配需求:

  • 仅能匹配「字母数字段+点+纯数字段」的固定结构,无法覆盖ID中包含字母数字混合段(如1A)、ID尾段带字母(如A8、尾缀A)的场景
  • 遇到多段点分隔的ID会提前截断,例如AA.1.2.2A仅能匹配到前三个字符AA.1,无法获取完整ID
  • 代码存在语法问题:使用关键字in作为循环变量、使用内置函数名input作为变量名,运行会直接报错

核心匹配逻辑

由于ID与描述之间无显式分隔符,通过文本特征识别分界点:ID为行首连续的字母、数字、点组合,分界位置为描述第一个单词的起始处——即第一个出现「大写首字母+小写字母」的英文单词起始位置,以此拆分ID和描述准确率最高。

正确实现代码

import re

# 正则规则:组1捕获完整ID,组2捕获完整描述
id_extract_pattern = re.compile(r'^([a-zA-Z0-9.]+?)([A-Z][a-z].*)$')
control_ids = {}

# 此处替换为实际输入的文本行列表
input_lines = [
    "TTTT.1.A8This is important",
    "AA.1.2.2ANothing is sometimes important",
    "AAC.1A.2Everything sometimes is not important"
]

for line in input_lines:
    line = line.strip()
    match_result = id_extract_pattern.match(line)
    if match_result:
        req_id = match_result.group(1).strip()
        req_desc = match_result.group(2).strip()
        control_ids[req_id] = req_desc

# 对齐打印结果,与预期输出格式一致
print(f"{'ID':<10} description")
for req_id, desc in control_ids.items():
    print(f"{req_id:<10} {desc}")

运行结果

ID         description
TTTT.1.A8  This is important
AA.1.2.2A  Nothing is sometimes important
AAC.1A.2   Everything sometimes is not important

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:54:15