【问题标题】:How to get the part of a string after the last occurrence of certain character?如何在最后一次出现某个字符后获取字符串的一部分?
【发布时间】:2020-09-17 03:02:29
【问题描述】:

我想在最后一次出现特定字符之后使用子字符串。 现在我找到了here 如何获得第一、第二左右的部分,但我只需要最后一部分。 输入数据是文件目录列表:

c:\dir\subdir\subdir\file.txt
c:\dir\subdir\subdir\file2.dat
c:\dir\subdir\file3.png
c:\dir\subdir\subdir\subdir\file4.txt

不幸的是,这是我必须处理的数据,否则我可以使用命令提示符列出它。 问题是目录的数量总是在变化。 我基于上一个链接的代码是:

select (regexp_split_to_array(BTRIM(path),'\\'))[1] from myschema.mytable

到目前为止,我已经在括号中尝试了一些我想到的东西。例如 [end]、[-1] 等。 他们都没有工作。有没有办法在不向后重新排列我的琴弦的情况下得到最后一部分,得到第一部分,然后再把它转回来?

【问题讨论】:

    标签: sql string postgresql split substring


    【解决方案1】:

    你可以使用regexp_matches():

    select (regexp_matches(path, '[^\\]+$'))[1]
    

    Here 是一个 dbfiddle。

    【讨论】:

    • 太棒了!非常感谢!您能解释一下 ^ 和 +$ 部分的作用吗?
    • ^ 表示“除此字符列表中的字符之外的任何字符”。 + 表示“1 个或多个字符”。 $ 将模式锚定到字符串的末尾。
    • 谢谢@GordonLinoff!那真的很有帮助! @Abra 我知道我应该接受这个答案(我刚刚接受了),但是它回答得太快了,网站说我必须等待 10 分钟才能接受它。
    猜你喜欢
    • 2014-01-21
    • 2013-03-28
    • 2020-10-25
    • 1970-01-01
    • 2021-08-22
    • 2022-06-18
    • 1970-01-01
    • 1970-01-01
    • 2014-03-04
    相关资源
    最近更新 更多