0

我正在尝试获取单词旁边的数字。例如“1bot 10box 100cs”我在 netsuite 中有另一个字段是“BOX”。我需要的是单词框旁边的数字,在我的示例中为 10。

我已经尝试过 Ltrim 和 Rtrim

regexp_substr((REPLACE((REPLACE({unitstype}, ' ', '-')),{transaction.unit},'^')), '[^-]+')

我希望输出将是我搜索的单词旁边的数字。

示例 1. field Ais equal to BOXand field Bis equal"1pc 10flp 100box 1000cs"结果应该是 100 result = 100

4

1 回答 1

1

请参阅下面使用您提供的输入的示例:

REGEXP_SUBSTR('1pc 10flp 100box 1000cs', '(\d+)BOX',1,1,'i',1)

结果 = 100。

假设 field Ais{unitstype}并且 field来自您B{transaction.unit}示例,这将变为:

REGEXP_SUBSTR({transaction.unit}, '(\d+)' || {unitstype},1,1,'i',1)

解释:

REGEXP_SUBSTR返回给定源字符串的子字符串,由正则表达式定义。

第一个参数:源字符串。

第二个参数:正则表达式匹配模式。

第三个参数:开始搜索的位置。默认值为 1,但在这里显式设置,因为我们想使用后面的参数。

第 4 个参数:返回匹配模式的哪个出现。同样,默认值为 1,在此处显式设置,因为我们想使用后面的参数。

第 5 个参数:一个匹配参数,可让您更改函数的默认匹配行为。在这种情况下,我习惯于'i'指定不区分大小写的匹配,因为您在一个字段中使用大写“BOX”,在另一个字段中使用小写。

第 6 个参数:指定要返回的正则表达式中的哪个捕获组。在这种情况下,您需要紧接在单位类型之前的数字,因此您可以将数字和单位匹配在一起,但在数字周围使用括号将其定义为捕获组,然后您可以使用此参数返回。

于 2019-07-25T14:46:28.440 回答