我在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上写Regexs。
答案 0 :(得分:0)
您当前的正则表达式存在一些问题,请尝试将[^\s]\d+.\d+
更改为以下内容:
\d+\.\d+
您当前的正则表达式无法逃避.
,因此正则表达式中的.
实际上会匹配任何字符。我不确定你要对[^\s]
做什么,因为这会匹配一个非空白字符,看起来你只对数字感兴趣。
您当前的正则表达式在“1.00 INR”上失败,因为1
与[^\s]
匹配,然后您的正则表达式查找一个或多个数字,但下一个字符为.
。
答案 1 :(得分:0)
嗯,我不知道rex,但如果它只是一个普通的正则表达式你需要,这将有效:
\d+\.\d+(?= [a-zA-Z]{3})
一个或多个数字,后跟一个小数,后跟一个或多个数字,并确保它有一个空格和3个字母。