【问题标题】:Negative match set of strings in regexp_substrregexp_substr 中的负匹配字符串集
【发布时间】:2016-08-28 11:02:15
【问题描述】:

我想匹配字符串中的所有字符,直到遇到以下子字符串之一:

'='
'+%'
'-%'

我没有问题否定一组单个字符(即 [^=+-]),我可以用

肯定匹配字符串
(=|\+%|-%) 

但我似乎无法弄清楚否定集合的语法。有什么建议吗?

【问题讨论】:

    标签: oracle11g regex-negation


    【解决方案1】:

    单独使用 REGEXP_SUBSTR 无法做到这一点,但这是一种选择:

    with temp as
    (
      select 'TEST1=TEST1' test1 from dual union all
      select 'TEST2+%TEST2' test1 from dual union all
      select 'TEST3+TEST3' test1 from dual union all
      select 'TEST4-%TEST4' test1 from dual union all
      select 'TEST5-TEST5' test1 from dual
    )
    
      SELECT test1,
             CASE
               WHEN REGEXP_INSTR(test1, '+%|=|-%') = 0 THEN test1
               ELSE REGEXP_REPLACE(SUBSTR(test1, 1, REGEXP_INSTR(test1, '-%|+%|=')), '[-=+%]')
               END
             result
    
      FROM temp
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-18
      • 1970-01-01
      • 1970-01-01
      • 2015-03-20
      • 1970-01-01
      • 1970-01-01
      • 2020-07-20
      • 1970-01-01
      相关资源
      最近更新 更多