Как удалить или пропустить несколько пустых новых строк в переменной?

DECLARE
   text VARCHAR2(4000) := 'line 1 text text text text text text text, 
line 2 text text text text text text text, 
  
  
   
line 3 text text text text text text text.';
BEGIN
    dbms_output.put_line (text);
END;
/  

Желаемый результат:

line 1 text text text text text text text, 
line 2 text text text text text text text, 
line 3 text text text text text text text.

Пытаюсь удалить все пустые строки из переменной. Пробовал использовать regexp_replace, но не смог получить желаемого результата.


Свободный перевод вопроса How to remove or skip the multiple new line in string от участника @S_sauden


Ответы (1 шт):

Автор решения: 0xdb

Хотя конечно можно использовать ^\s*$ с модификатором m, но самый простой способ, заменить повторяющиеся переводы строк chr(10):

declare
    text varchar2 (4000) := '
line 1 text text text text text text text, 
line 2 text text text text text text text,


line 3 text text text text text text text.';
begin
    dbms_output.put_line (
        trim (both chr(10) from regexp_replace (
            text, chr(10)||'(\s*'||chr(10)||')+', chr(10))));
end;
/  

Здесь \s* только для того, чтобы удалить строки, содержащие только пробелы. Результат:

line 1 text text text text text text text, 
line 2 text text text text text text text,
line 3 text text text text text text text.

Свободный перевод ответа от участника @Sayan Malakshinov

→ Ссылка