【问题标题】:Oracle regexp_replace optional groupOracle regexp_replace 可选组
【发布时间】:2019-06-25 21:31:06
【问题描述】:

我有一个字符串'SPECIFIC WORD BIG WORLD,SPECIFIC WORD BIG SUN'。 输出字符串应如下所示:'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/ 但我无法将可选逗号作为一个单独的组。

【问题讨论】:

    标签: regex oracle regexp-replace


    【解决方案1】:

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

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

    这只是搜索

    • 一个空格
    • BIG 紧随其后
    • 后跟一个空格
    • 后跟一个字 字符,一次到无限次

    【讨论】:

    • 你想多了。一双新鲜的眼睛对此有所帮助;)。如果这回答了您的问题,您可以将其标记为此类。
    • 哦,是的,对不起,我忘了这样做。完毕!再次感谢!
    猜你喜欢
    • 1970-01-01
    • 2021-09-09
    • 2018-09-20
    • 2014-05-28
    • 2018-10-07
    • 2018-04-23
    • 2019-10-20
    • 2015-07-31
    • 2019-09-02
    相关资源
    最近更新 更多