在字符串中搜索子字符串

时间:2021-05-19 19:42:16

标签: regex oracle regexp-substr

我正在寻找一个正则表达式来获得正确的输出

以我为例:

SELECT regexp_substr('brablcdefghig', '[^(bl)]+$') FROM dual;

我期待 'bl' 后面的内容:cdefghig 没关系,

但是当我修改输入并添加 'b' 字符时,为什么我在输出中为 NULL?

 SELECT regexp_substr('brablcdefghigb', '[^(bl)]+$') FROM dual;

1 个答案:

答案 0 :(得分:0)

这是一个简单的substr + instr;你不需要正则表达式。如果必须是正则表达式,请参阅第 8 行和第 9 行

SQL> with test (id, col) as
  2    (select 1, 'brablcdefghig'     from dual union all
  3     select 2, 'brablcdefghigb'    from dual
  4    )
  5  select id,
  6         col,
  7         substr(col, instr(col, 'bl') + 2) result,
  8         regexp_substr(replace(col, 'bl', '#'), '[^#]+$') result2,
  9         regexp_replace(col, '.+bl', '') result3
 10  from test;

        ID COL            RESULT     RESULT2    RESULT3
---------- -------------- ---------- ---------- ----------
         1 brablcdefghig  cdefghig   cdefghig   cdefghig
         2 brablcdefghigb cdefghigb  cdefghigb  cdefghigb

SQL>