gpt4 book ai didi

regex - 正则表达式可以将/01/02/007/…转换为01/02,将01转换为01/NA-可以吗?

转载 作者:行者123 更新时间:2023-12-01 13:41:58 25 4
gpt4 key购买 nike

我有任意长度的类似文件系统(但数值)的路径,我需要将其规范化为固定深度(2或3)。基本上,我想要这个结果:

/01/02/007/008  ->  01/02/007
/01/02/007 -> 01/02/007
/01/02 -> 01/02/NA
/01 -> 01/NA/NA

我想使用Oracle的 regexp_replace()函数,它扩展了POSIX regexp标准 apparently impelements

到目前为止,我所拥有的是: regexp_replace(path,'/([^/]+(/[^/]+)?).*','\1');但是我在 NA部分遇到了麻烦。

最佳答案

这似乎可行:

SQL> WITH q AS (
SELECT '/01/02/007/008/009' a FROM dual
UNION
SELECT '/01/02/007/008' FROM dual
UNION
SELECT '/01/02/007' FROM dual
UNION
SELECT '/01/02' FROM dual
UNION
SELECT '/01' FROM dual)
SELECT a, CASE WHEN INSTR(a,'/',1,4) > 0 THEN SUBSTR(a,2,INSTR(a,'/',1,4)-2)
WHEN INSTR(a,'/',1,3) > 0 THEN SUBSTR(a,2)
WHEN INSTR(a,'/',1,2) > 0 THEN SUBSTR(a,2)||'/NA'
ELSE SUBSTR(a,2)||'/NA/NA'
END RESULT
FROM q;

A RESULT
-------------- -------------------
/01 01/NA/NA
/01/02 01/02/NA
/01/02/007 01/02/007
/01/02/007/008 01/02/007
/01/02/007/008/009 01/02/007

SQL>

当然,如果这只是正则表达式的练习,那么它不符合您的要求。

关于regex - 正则表达式可以将/01/02/007/…转换为01/02,将01转换为01/NA-可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3609583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com