You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中如何用SUBSTRING正则提取文本中多个图片URL?

如何在PostgreSQL中提取文本字段里的所有图片URL

嘿,这个问题我之前帮不少人解决过!你现在用的SUBSTRING()确实只能返回第一个匹配项,但PostgreSQL有专门的函数能一次性拿到所有符合条件的图片URL——就是regexp_matches()。

下面给你两种常用的实现方式,按需选择:

1. 返回每行一个匹配的URL(多行结果)

如果你希望每个图片URL单独占一行,可以给regexp_matches()加上全局匹配标志'g':

SELECT regexp_matches(text_field, 'src="([^"]+)"', 'g') AS image_url
FROM your_table;
  • 'g'标志告诉PostgreSQL要全局搜索,找出所有符合src="..."格式的URL,而不是只停在第一个匹配项。
  • 结果里的每个值是一个单元素数组,如果你想直接拿到字符串而不是数组,可以用unnest()展开:
SELECT unnest(regexp_matches(text_field, 'src="([^"]+)"', 'g')) AS image_url
FROM your_table;

2. 将同一行的所有URL合并成数组(单行结果)

如果希望把同一条记录里的所有图片URL放到一个数组里,方便后续处理,可以结合array_agg()和子查询:

SELECT 
    id,  -- 假设你的表有主键id,用来区分不同记录
    array_agg(image_url) AS all_image_urls
FROM (
    SELECT 
        id,
        unnest(regexp_matches(text_field, 'src="([^"]+)"', 'g')) AS image_url
    FROM your_table
) AS subquery
GROUP BY id;

小提示:兼容单引号包裹的src

如果你的文本里存在src='xxx'这种单引号格式的图片标签,可以调整正则表达式来同时匹配单双引号:

SELECT unnest(regexp_matches(text_field, 'src=['"]([^'"]+)['"]', 'g')) AS image_url
FROM your_table;

内容的提问来源于stack exchange,提问作者vw-traveller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:41:33