Oracle regexp_replace 可选组

Oracle regexp_replace optional group

我有一个字符串 '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)(.*)(,)?', '');
    dbms_output.put_line(l_string);
 end;
 /

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

根据您的描述,以下应该足够了

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

这只是搜索

  • 一个space
  • 紧随其后的是 BIG
  • 后跟 space
  • 后跟一个词 字符,一次到无限次