Oracle regexp_replace可选组

时间:2019-02-01 10:10:20

标签: regex oracle regexp-replace

我有一个字符串“ SPECIFIC WORD BIG WORLD,SPECIFIC WORD BIG SUN”。 输出字符串应如下所示:'SPECIFIC WORD,SPECIFIC WORD'。换句话说,我想删除“ SPECIFIC WORD”之后的所有内容,但我想保留逗号。到目前为止,我尝试过的事情:

 declare
 l_string varchar2(10000);
 begin
    l_string := 'SPECIFIC WORD BIG WORLD, 
    SPECIFIC WORD BIG SUN, 
    SPECIFIC WORD BIG EARTH';
    dbms_output.put_line(l_string);
    l_string := regexp_replace(l_string, '(SPECIFIC WORD) (BIG)(.*)(,)?', '\1\4');
    dbms_output.put_line(l_string);
 end;
 /

我的问题是,在最后一场比赛中,不会有逗号,但是当我将此逗号标记为可选序列时,我根本不会得到逗号。有没有办法解决?我还尝试通过以下方法解决此问题: https://regex101.com/ 但我不能将逗号分隔为一个单独的组。

1 个答案:

答案 0 :(得分:1)

根据您的描述,以下内容就足够

l_string := regexp_replace(l_string, ' BIG \w+', '');

这只是搜索

  • 一个空格
  • 之后是BIG
  • 后跟一个空格
  • 后面有一个词 字符,一次到无限次