sql - Postgresql正则表达式匹配函数: regexp_matches

标签 sql arrays regex postgresql

给定一个字符串,我想提取所有匹配正则表达式(例如电子邮件)的表达式作为数组。这是我的实际代码,使用 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/

相关文章:

mysql - SQL 计算键值列的唯一组合中的行数

arrays - 在不排序的情况下找到未排序数组的中位数

javascript - 使用 'broad match' 样式的过滤方法根据 Google Apps 脚本中的另一个数组过滤数组

正则表达式删除所有大写字母和后面的逗号

sql - 从数据库实时计算百万用户?

SQL 13 个月的交易和数量数据提取每月分割

javascript - 在 React Native 中从数组 onPress 中删除对象

swift - swift 中带反斜杠的正则表达式

r - 从 R 中的化学式中提取数字

sql - SQL脚本中的Week()函数