【问题标题】:regular expression in Teradata queryTeradata 查询中的正则表达式
【发布时间】:2021-06-09 01:57:19
【问题描述】:

我有以下输入字符串:

字符串1: xyx;;;;str1=P1:P2|str2=1/3|str3=s1:s2

字符串2: mzn;;;;str1 = P3:P4 | str2 = 2/5

预期结果: 对于字符串 1: str1_val=P1:P2 str2_val=1/3

对于字符串 2: str1_val=P3:P4 str2_val=2/5

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

对 string1 工作正常,但对 string2 不工作。 请帮助一种适用于两种情况的方法

【问题讨论】:

    标签: teradata teradatasql


    【解决方案1】:

    您需要添加可选空格,但后向仅允许固定长度匹配。但\K 类似,它重置了比赛的开始,即忘记上一场比赛

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

    RegEx101

    【讨论】:

    • 非常感谢!!
    猜你喜欢
    • 2020-02-25
    • 2019-03-04
    • 2018-08-02
    • 2016-10-08
    • 1970-01-01
    • 1970-01-01
    • 2019-08-20
    相关资源
    最近更新 更多