使用正则表达式格式化电子邮件 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
我有一个包含电子邮件地址的字符串,例如
,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