我有以下输入字符串:
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