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

InsightConnect工作流中Python正则提取CVE编号报错‘no such group’的求助

解决Python脚本提取CVE编号的报错问题

报错原因分析

你遇到的no such group错误,核心问题在于:正则表达式里没有定义捕获组(即没有用圆括号()包裹需要提取的子串),但你却尝试调用m.group(1)来获取第一个捕获组的内容。group(0)才是匹配整个正则表达式的结果,而group(1)及以后仅对应正则里显式定义的捕获组。

修正后的脚本方案

这里提供两种可行的修正方式,任选其一即可:

方式1:直接使用group(0)获取完整匹配结果

不需要修改正则,直接用group(0)拿到整个CVE编号:

import re
# 实际使用时保留InsightConnect的模板变量,测试时可替换为示例文本
text = "{{[\"Get Vulnerability Content from Rapid7 Vuln DB\"].[content_result].[title]}}"
m = re.search(r'CVE-\d{4}-\d{4,7}', text)
if m:
    found = m.group(0)
    # 输出到InsightConnect的Out变量,方便后续步骤调用
    print(found)
    # 或者通过return返回结构化结果,适配工作流后续步骤:
    # return {"extracted_cve": found}

方式2:给正则添加捕获组,使用group(1)

如果习惯用捕获组逻辑,给正则里的CVE编号规则加上圆括号即可:

import re
text = "{{[\"Get Vulnerability Content from Rapid7 Vuln DB\"].[content_result].[title]}}"
# 给整个CVE匹配规则加上捕获组
m = re.search(r'(CVE-\d{4}-\d{4,7})', text)
if m:
    found = m.group(1)
    print(found)
    # 同样可以返回结构化结果供工作流使用
    # return {"extracted_cve": found}

适配InsightConnect工作流的额外建议

  • 循环处理单行文本:当前脚本逻辑已经适配循环执行、每次处理一行的场景,默认会提取当前行中的第一个CVE编号;如果一行里有多个CVE,可改用re.findall(r'CVE-\d{4}-\d{4,7}', text)获取所有匹配项。
  • 输出到后续步骤:在InsightConnect中,建议通过return语句输出结构化变量(比如示例中的{"extracted_cve": found}),而不是仅用print,这样后续发送到Teams的步骤可以直接引用这个变量,更符合工作流的协作逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 14:24:09