Oracle regexp\u替换可选组

Oracle regexp\u替换可选组,regex,oracle,regexp-replace,Regex,Oracle,Regexp Replace,我有一个字符串“特定单词大世界,特定单词大太阳”。 输出字符串应如下所示:“特定单词,特定单词”。换句话说,我想删除“SPECIFIC WORD”后面的所有内容,但我想保留逗号。到目前为止,我尝试的是: declare l_string varchar2(10000); begin l_string := 'SPECIFIC WORD BIG WORLD, SPECIFIC WORD BIG SUN, SPECIFIC WORD BIG EARTH';

我有一个字符串“特定单词大世界,特定单词大太阳”。 输出字符串应如下所示:“特定单词,特定单词”。换句话说,我想删除“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;
 /
我的问题是,在最后一次匹配时,将没有逗号,但当我将此逗号标记为可选序列时,我根本没有逗号。这有什么办法吗?我还尝试通过以下方式解决此问题:
但我不能将可选逗号作为一个单独的组来使用。

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

l_string := regexp_replace(l_string, ' BIG \w+', '');
这只是搜索

  • 空间
  • 其次是大
  • 后面跟着一个空格
  • 后面跟着一个词 字符,一到无限次

你想得太多了。一双新鲜的眼睛有助于做到这一点;)。如果这回答了你的问题,你可以这样标记。哦,是的,我忘记了,对不起。完成!再次感谢你!