Regex 在Splunk rex中,正则表达式适用于除1.00以外的所有对象

Regex 在Splunk rex中,正则表达式适用于除1.00以外的所有对象,regex,currency,splunk,money-format,Regex,Currency,Splunk,Money Format,我正在使用splunk中的rex从包含金额加上3位货币代码的字段中提取十进制金额。两个值之间用空格分隔 示例: 200.00 INR 2390.11 INR 1.00 INR 1789.00 INR 我正在内联使用rex命令: rex field=TxnAmt "(?<TxnAmt>[^\s]\d+.\d+) 任何想法都会有帮助。完整免责声明:我不是一名完整的程序员,也不希望成为一名完整的程序员,但我确实喜欢在Splunk上编写正则表达式。您当前的正则表达式存在一些问题,请尝试将

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

示例:

200.00 INR
2390.11 INR
1.00 INR
1789.00 INR
我正在内联使用rex命令:

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

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

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

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


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

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

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

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

旁注:我认为您也应该转义
。谢谢。这很有效。我想我已经习惯了阅读,直到解析逗号分隔的值的时候我才想把它删掉。没问题,欢迎来到这个网站!如果我的答案有效,你可以点击旁边复选标记的轮廓。Splunk使用PCRE。rex只是一个字段上的内联正则表达式。谢谢你这么做。我需要单独提取货币,也许可以使用它。
\d+\.\d+(?= [a-zA-Z]{3})