如何 Return Business Objects Web Intelligence 4.2 中的第 n 个匹配模式

How to Return the nth matching pattern in Business Objects Web Intelligence 4.2

我在 Business Objects 4.2 中创建了以下变量:

2cPat =Pos([Service Item Value];"2C" )

2C Ref #1 =If([2cPat])=0 Then "" Else (Substr([Service Item Value];[2cPat] ;10 ))

2cPat 变量的作用是逐行查看 [Service Item Value] 列并找到以 2C

开头的第一个单词

2C Ref #1 变量的作用是提取以 2C 开头且总长度为 10 个字符的匹配模式。

问题是我每行可以有超过 1 个 2C 匹配项,我需要提取每行中出现的所有匹配项

我的方法是创建另一个名为 2C Ref #2 的变量,但我遇到的问题是如何让代码忽略存储在 [=16= 上的已找到的 2C ]

以下是数据目前的示例:

服务项目价值

    2C Ref #1   2C Ref #2   2C Ref #3   2C Ref #4   2C Ref #5
    E2E: 2C03144250 ; 
Site 1: 2C03144220; Site 2: 2C03144245  Site 2: EAFE03144169  C72/273918    2C03144250  2C03144220          
    Site 1: 2C03100386; Site 2: 2C03100440 ; End to End: 2C03100444  SITE1: EAGE02897836 ; SITE2: EAFE03100362  C72/266267  2C03100386  2C03100440          
    ETHWIR000214950, e2e 2C02474833 , 2C02474832 POP - 2C02474831 CX    2C02474833  2C02474832  

由于数据样本的长度,我无法使其在堆栈溢出时适合此处,但也请查看我截取的屏幕截图:

我已经尝试并成功了,但是要提取整个字符串,您需要编写许多公式,因为我在 WEBI 中找不到任何循环功能。

解决方案如下:

首先提取第一个 2c 字符串,然后将剩余的字符串存储在新变量中,在第 2 步中提取连续的 2c 字符串,然后将剩余的字符串存储在另一个变量中,您需要这样如果需要,稍后可以转到字符串末尾,您可以连接所有单独的 2c 字符串。

第一个 2c 字符串的公式

=Substr([Column1];Pos([Column1];"2C");10)

现在提取除此字符串之外的剩余字符串:

不包括前 2c 部分的剩余字符串 "remainining 公式:

=Right([Column1];Length([Column1])-(Pos([Column1];"2C")+10))

现在从剩余的字符串中提取下一个 2c 值

=Substr([remaining];Pos([remaining];"2C");10)

现在您需要提取字符串的下一部分,不包括上述 2c 个值。

附上我所做的截图。

试试让我知道