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
- 后跟一个词
字符,一次到无限次
我有一个字符串 '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
- 后跟一个词 字符,一次到无限次