Teradata查询中的正则表达式



我有以下输入字符串:

string1:xyx;;;; str1 = P1, P2 | str2 = 1/3 | str3 = s1, s2

string2相等:mzn;;;;str1 = P3:P4 | str2 = 2/5

结果预期:string1:str1_val = P1, P2str2_val = 1/3

string2相等:str1_val = P3, P4str2_val = 2/5

我试过了的str1_val = REGEXP_SUBSTR("xyx;;;; str1 = P1, P2 | strt2 = 1/3 | str3 = s1, s2 ', ' (& lt; = str1 =) (?)(?=|)') - 工作正常的str2_val = REGEXP_SUBSTR("xyx;;;; str1 = P1, P2 | str2 = 1/3 | str3 = s1, s2 ', ' (& lt; = str2 =) (?)(?=|)') - 工作很好

适用于string1,但不适用于string2。

请提供一种对这两种情况都有效的方法。

您需要添加可选的空格,但是向后看只允许固定长度的匹配。但是K是类似的,它重置匹配的开始,即忘记之前的匹配:

REGEXP_SUBSTR(s,'str1s*=s*K([^|]+)')
s*       = optional whitespace
K        = reset start of match
([^|]+)   = any char but a | 

看到RegEx101

最新更新