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

PostgreSQL:将第5个正斜杠后的所有斜杠替换为连字符

PostgreSQL:替换第5个正斜杠后的所有斜杠为连字符

针对需求,这里提供两种实现方式,都能将URL中第5个正斜杠之后的所有斜杠替换为连字符:

方法一:使用正则表达式替换

通过regexp_replace结合正向预查,精准匹配第5个斜杠之后的所有斜杠并替换:

SELECT 
  regexp_replace(
    'https://this/is/a/very/long/url', 
    '/(?<=^(?:[^/]*?/){5}.*)', 
    '-', 
    'g'
  ) AS transformed_url;

说明:

  • ^(?:[^/]*?/){5}:匹配开头到第5个正斜杠的所有内容
  • /(?<=...):正向预查,仅匹配位于上述内容之后的正斜杠
  • 'g'参数表示全局替换所有符合条件的斜杠

如果要处理表中的字段,只需把字符串常量换成字段名即可:

SELECT 
  regexp_replace(
    url_column, 
    '/(?<=^(?:[^/]*?/){5}.*)', 
    '-', 
    'g'
  ) AS transformed_url
FROM your_table;

方法二:拆分字符串后重新拼接

这种方式更直观,适合不熟悉正则的场景:

WITH split_url AS (
  SELECT 
    string_to_array(url_column, '/') AS url_parts
  FROM your_table
)
SELECT 
  CONCAT_WS(
    '/', 
    url_parts[1], url_parts[2], url_parts[3], url_parts[4], url_parts[5],
    CONCAT_WS('-', url_parts[6:])
  ) AS transformed_url
FROM split_url;

说明:

  • string_to_array(url_column, '/'):将URL按正斜杠拆分为数组
  • url_parts[1]到url_parts[5]:取数组前5个元素,用/拼接还原前5个斜杠的内容
  • url_parts[6:]:取第5个斜杠之后的所有元素,用-拼接
  • 最后用/连接前后两部分,得到目标结果

两种方法都能处理示例中的URL,输出结果为https://this/is/a/very-long-url;如果URL的斜杠数量不足5个,会直接返回原URL,不会产生错误。

内容的提问来源于stack exchange,提问作者KLassiux

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 09:05:33