使用正则表达式格式化电子邮件 ID 字符串

Formatting email id strings using regexp

我有一个包含电子邮件地址的字符串,例如

,abc@gmail.com, pqr@gmail.com, 123@gmail.com,

abc@gmail.com,, pqr@gmail.com, 123@gmail.com,xyz@gmail.com,

我希望输出为

abc@gmail.com,pqr@gmail.com,123@gmail.com
abc@gmail.com,pqr@gmail.com,123@gmail.com,xyz@gmail.com

我尝试了很多选项,但无法获得想要的结果...有时在字符串的开头和结尾处使用双逗号、逗号。

可以使用正则表达式在单个 sql 语句中实现吗?

我正在使用 Oracle 10g。

with testdata as
  (select ',abc@gmail.com, pqr@gmail.com, 123@gmail.com,' as e from dual
   union all
   select 'abc@gmail.com,, pqr@gmail.com, 123@gmail.com,xyz@gmail.com,' from dual)
select TRIM(',' FROM REPLACE(REPLACE(e,' '),',,',','))
from testdata;

abc@gmail.com,pqr@gmail.com,123@gmail.com
abc@gmail.com,pqr@gmail.com,123@gmail.com,xyz@gmail.com

--使用正则表达式我们可以这样做。

WITH testdata AS
  (SELECT ',abc@gmail.com, pqr@gmail.com, 123@gmail.com,' AS e FROM dual
  UNION ALL
  SELECT 'abc@gmail.com,, pqr@gmail.com, 123@gmail.com,xyz@gmail.com,'
  FROM dual
  )
SELECT trim(','
FROM regexp_replace((regexp_replace(e,',|[[:space:]]',NULL)),'gmail.com','gmail.com,'))
FROM testdata