给定一个字符串,我想提取所有匹配正则表达式(例如电子邮件)的表达式作为数组。这是我的实际代码,使用 PostgreSQL 9.4 :
select regexp_matches('user1@gml.com lorem ipsum user2@yho.com',
'([a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4})',
'g')
输出为2条记录:
regexp_matches
-----------------
{user1@gml.com}
{user2@yho.com}
(2 rows)
我想要的是将所有匹配项放在一个数组中,例如:
regexp_matches
-----------------
{user1@gml.com, user2@yho.com}
(1 row)
如何实现?
最佳答案
您可以取消嵌套
每个结果数组,然后array_agg
将它们放在一起。
有点丑:
select array_agg(x)
from (
select unnest(
regexp_matches('user1@gml.com lorem ipsum user2@yho.com',
'([a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4})',
'g')
)
) a(x);
关于sql - Postgresql正则表达式匹配函数: regexp_matches,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31070990/