split 能否实现从后往前拆

SPL 中的 split 拆分函数其中有一个功能选项是 @1,“找到第一个分隔符即停止,拆成两段”。比如以下例子中,按第一个逗号拆分后就停止拆分:

imagepng

如果,想实现按从后往前数的第一个逗号拆分,把上图示例中的 "a,b,c" 拆分成 [“a,b”,“c”] 该如何写?有一种方法是用正则,比如:

imagepng

这里用正则没有问题,但把场景搞复杂一点,文本串中有括号和引号,在拆分时要实现从后往前,并且括号和引号里的分隔符不拆,正则就有点不好写了。比如把 "a,b,[c,[d,e]]" 按最后一个逗号拆分成两段,得到 a,b 和 [c,[d,e]],就会比较费劲了。

注意到了 split 函数中既有 @1 选项也有 @b 选项,我在想官方是否能拓展一下 split 的选项,实现从后往前拆。比如在 MS 的 Power Query 中也有 Splitter 类的函数,里边就指定了参数是从左往右还是从右往左,举例如下:

imagepng

SPL 中有一些函数有 @z 选项,能实现从后往前的查找,比如 select,pselect,pos…,所以,希望 split 函数也能实现从后往前的拆分。

以上需求,恳请斟酌!


还有另外一些拆分,供参考,比如:

1、按固定长度拆分,SPL 得用正则来实现按固定长度拆分:

imagepng

2、按指定长度拆分,这是 Power Query 里的写法:

imagepng

SPL 里如果按指定长度拆分,方法肯定有。比如,从左往右拆,简单一些,即使后续长度超过了文本本身长度,也会返回空,不会报错:

imagepng

如果,从右往左拆,就会稍显复杂,需要考虑位置越界的情况,为了拆而拆,不那么优雅了:

imagepng