如何从满足条件的多个整数之间的字符串中提取文本并返回所有值

问题描述

这是一个字符串的例子,它可以更长

1160752 Meranji Oil Sats -Mt(MA) (000600007056 0001),PE:Toolachee Gas Sats -Mt(MA) (000600007070 0003)GL:合同服务 (510000),COT:网络 (N-OM),CO A00009.0723,Oil Sats -Mt(MA) (000600007053 0003)

结果必须是 column1 600007056 column2 600007070 column3 600007053 我在 Spotfire 工作并通过转换创建计算列,因为我需要将列加入其他数据集

我已经尝试了以下方法,但它只能提取第一个 600.. 数字而不是其他数字,而且数量可能不确定。

Account 是包含字符串的列

Mid([Account],Find("(000",[Account]) + Len("(000"),Find("0001)",[Account]) - Find("(000",[Account]) - Len("(000"))

谢谢!

解决方法

假设我的猜测是正确的,并且要寻找的模式是: 9 个数字,从 6 开始,前面是 1 个左括号和 3 个零,后跟一个空格、4 个数字和一个右括号

您可以通过以下方式获取单个事件:

column1:RXExtract([金额],'(?

column2:RXExtract([金额],'(?

棘手的一点是找到要定义的列数,正如您所说的可以有很多。一种知道的方法是首先计算最大出现次数,如下所示:

maxn: Max((Len([Amount]) - Len(RXReplace([Amount],'(?

仍然假设要提取的每列中的位数为 9。这将原始 [Amount] 的长度与提取模式替换为空字符串的长度进行比较,然后除以 9。

然后你知道你最多可以定义 maxn 列,实例较少的行的额外列将是空的。

请注意,Spotfire 总是需要 两个 反斜杠来进行转义(我必须向编辑器添加更多内容以使其正确呈现,我希望我没有错过任何一个)。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...