0

我在 splunk 中使用 rex 从包含金额加上 3 位货币代码的字段中提取十进制金额。两个值由空格分隔。

例子:

200.00 INR
2390.11 INR
1.00 INR
1789.00 INR

我正在使用 rex 命令内联:

rex field=TxnAmt "(?<TxnAmt>[^\s]\d+.\d+)

使用这个命令大部分是成功的,但是我的错误是在 1.00 INR 上起作用的。

结果:

200.00
2390.11
1.00 INR
1789.00

任何想法都会有所帮助。完全免责声明:我不是一个完整的程序员,我也不渴望成为,但我确实喜欢在 Splunk 上编写正则表达式。

4

2 回答 2

0

您当前的正则表达式存在一些问题,请尝试更改[^\s]\d+.\d+为以下内容:

\d+\.\d+

您当前的正则表达式不会转义.,因此.您的正则表达式中的实际将匹配任何字符。我不太确定你要做什么[^\s],因为这将匹配一个非空白字符,而且看起来你只对数字感兴趣。

您当前的正则表达式在“1.00 INR”上失败,因为 与1匹配[^\s],然后您的正则表达式查找一个或多个数字,但下一个字符是..

于 2012-09-21T18:36:19.737 回答
0

好吧,我不了解 rex,但如果它只是您需要的普通 ole 正则表达式,这将起作用:

\d+\.\d+(?= [a-zA-Z]{3})

1 个或多个数字,后跟一个小数,后跟 1 个或多个数字,并确保它后面有一个空格和 3 个字母。

于 2012-09-21T18:36:46.480 回答