oracle regexp_replace to remove duplicate duplicate strings and double separators
Would the following be acceptable (not a REGEXP_REPLACE, but maybe easier to understand)?

Test table/data:

create table t as
select 'row1' c1 , 'value1' c2 from dual union all
select 'row2' ,  'value2' from dual union all
select 'row3' ,  null from dual union all
select 'row4' ,  'value2' from dual union all
select 'row5' ,  'value3' from dual union all
select 'row6' ,  'value1' from dual union all
select 'row7' ,  null from dual;

select * from t;

C1      C2
row1    value1
row2    value2
row3    null
row4    value2
row5    value3
row6    value1
row7    null


Query:

select 
  listagg(c2 , ',') within group ( order by c2 ) 
from (
  select distinct c2 
  from t
  where c2 is not null
);

result
value1,value2,value3


Dbfiddle here.