我对regexp函数很陌生,想要一些建议。
我有一个字段,其中包含管道定界值,并希望根据另一个值的位置提取一个值。
原因是我想要的值并非总是设置,而是总是位于另一个值的第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)为content_rev

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

反向(substr(content_rev,instr(content_rev,'\ | 563 \ |')-50,55))作为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

关于regex - RegEx从管道定界字符串中提取值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58609228/

10-11 17:40