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

如何在Business Objects Web Intelligence 4.2中提取第N个2C匹配模式

提取Business Objects 4.2中每行所有"2C"开头的10位匹配项

你的现有变量已经能成功提取第一个匹配项,要提取后续的内容,核心思路是每次在上一个匹配项结束的位置之后继续查找,这样就能自动忽略已经提取过的部分。下面是具体的变量创建步骤,完全适配你的需求:

步骤1:完善基础变量(记录第一个匹配的结束位置)

先新增一个变量,用来记录第一个"2C"匹配项结束的位置,为后续查找做铺垫:

2cEnd1 = If([2cPat] = 0; 0; [2cPat] + 10)
  • 逻辑说明:如果没找到第一个"2C",结束位置设为0;否则第一个匹配从[2cPat]开始,长度10,所以结束位置是起始位置+10。

步骤2:提取第二个匹配项(2C Ref #2)

需要两个变量配合定位并提取第二个匹配:

  1. 查找第二个"2C"在剩余字符串中的位置:
2cPat2 = Pos(Substr([Service Item Value]; [2cEnd1] + 1); "2C")
  • 逻辑说明:从第一个匹配结束的下一个位置截取字符串,然后在这个子串里找"2C"的起始位置。
  1. 提取第二个10位匹配项:
2C Ref #2 = If([2cPat2] = 0; ""; Substr([Service Item Value]; [2cEnd1] + [2cPat2]; 10))
  • 逻辑说明:如果没找到第二个"2C"就返回空;否则用第一个结束位置加上子串里的位置,得到原字符串中的起始位置,再截取10位内容。

步骤3:提取第三个及更多匹配项(以此类推)

按照同样的逻辑,重复创建变量即可提取后续的匹配项,比如第三个:

  1. 记录第二个匹配的结束位置:
2cEnd2 = If([2cPat2] = 0; [2cEnd1]; [2cEnd1] + [2cPat2] + 9)
  • 这里用+9是因为[2cPat2]是子串中的起始位置,加上9刚好对应10位内容的结束位置,和原字符串的位置计算完全匹配。
  1. 查找第三个"2C"的位置:
2cPat3 = Pos(Substr([Service Item Value]; [2cEnd2] + 1); "2C")
  1. 提取第三个匹配项:
2C Ref #3 = If([2cPat3] = 0; ""; Substr([Service Item Value]; [2cEnd2] + [2cPat3]; 10))

你可以复制这个逻辑,继续创建2C Ref #4、2C Ref #5等变量,直到覆盖你数据中最多的匹配次数。

验证你的示例数据

用你提供的第一行数据E2E: 2C03144250 ; Site 1: 2C03144220; Site 2: 2C03144245 ...测试:

  • 2C Ref #1提取2C03144250
  • 2C Ref #2提取2C03144220
  • 2C Ref #3提取2C03144245
    完全符合你的预期需求。

注意:如果你的"2C"匹配项存在特殊嵌套情况(比如"2C"出现在其他非目标字符串中),可以再微调逻辑,但根据你的示例数据,这个方案完全适用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:21:18