如何修复此正则表达式?

时间:2019-02-03 01:46:28

标签: regex oracle regexp-replace

我有一个正则表达式(,\ s *?\ n)(\ s *?)),根据https://regex101.com/,它应该可以工作。唯一的问题是事实并非如此。我想要实现的是:

'some text, )'

将转换为

'some text )'

我知道,如果我的正则表达式比输出字符串能以某种方式起作用:

'some text)'

有什么办法不将')'与'某些文本'移到同一行吗?

我用于测试的示例:

declare
    l_example varchar2(32000);
begin
    l_example :='some text,
    )';
    dbms_output.put_line(l_example);
    l_example := regexp_replace(l_example, '(,\s*?\n)(\s*?\))', '\2');
    dbms_output.new_line;
    dbms_output.put_line(l_example);
END;
/

1 个答案:

答案 0 :(得分:1)

请检查以下内容:

regexp_replace(l_example, '(,\s*?'|| CHR(10)||' *)(\s*?\))', '\2', 1, 1,'m');

db<>fiddle