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

Postgres中提取文件名后路径并去除首个斜杠/的方法求助

解决方案

可以通过调整正则表达式直接提取目标内容,或者在原有查询结果基础上去除开头斜杠,两种方法都能适配filename后有无斜杠的场景:

方法1:简化正则直接提取

直接在substring的正则中匹配filename后的内容,自动忽略开头的可选斜杠:

select lower(substring('ksh $sample/wrapper.sh --filename /abc/test/svc_test_abc_card.yaml' from 'filename\s*(?:/)?([^ ]+)'));

正则说明:

  • filename\s*:匹配filename及后面的任意空白字符
  • (?:/)?:非捕获组,匹配可选的单个斜杠
  • ([^ ]+):捕获组,提取斜杠(或直接)后面的所有非空白字符,即最终目标内容

方法2:在原有结果上去除斜杠

基于你原有的查询逻辑,用regexp_replace去掉结果开头的斜杠:

select lower(regexp_replace(substring(split_part('ksh $sample/wrapper.sh --filename /abc/test/svc_test_abc_card.yaml', 'filename', 2) from '[^ ]+'), '^/', '', ''));

说明:

  • regexp_replace(..., '^/', '', ''):匹配字符串开头的斜杠并替换为空,若开头无斜杠则不做修改

两种方法测试后,均会返回期望结果:abc/test/svc_test_abc_card.yaml。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 18:02:07