RegExp 从管道分隔的字符串中提取值

RegExp extract value from pipe delimited string

我对正则表达式函数很陌生,需要一些建议。 我有一个包含管道分隔值的字段,并希望根据另一个值的位置提取一个值。 这样做的原因是我想要的值并不总是设置的,而是总是倾向于出现在另一个值的第 5 个位置。希望我到目前为止是有道理的。

这是字符串的示例:

|XYZ|CBA|365|15841.25|43.40|20171202|20181201|365|17024.94|46.64||20171202|20181201 |365|17024.94|46.64||0.00|546.18|0000|

我想提取粗体和斜体的数字 - 546.18,它往往位于第三个“365”之后的第 5 个位置,或者从下往上的第一个 365,这是我更喜欢的。

我试过反转字符串并得到 365 的第一个实例

第一步-反转字段(内容) 反转(内容)为 content_rev

第二步 - 从 563 的第一个实例中取回前 55 个字符并将字符串反转回原始

reverse(substr(content_rev, instr(content_rev, '\|563\|')-50, 55)) as extract_content

输出如下: |365|17024.94|46.64||0.00|546.18|8528|02|0540023096|2|2

从现在开始不确定如何获得突出显示的值

我敢肯定这种方法不是最有效的方法,所以如果有人有更好的方法来得到结果,我们将不胜感激。

拆分使用 |作为分隔符并取第 5 个元素。

split(your_string, '\|')[5]

其中 your_string 是您使用反向等得到的结果:|365|17024.94|46.64||0.00|546.18|8528|02|0540023096|2|2