2012-09-21 31 views
0

我在splunk中使用rex來從包含金額加上3位貨幣代碼的字段中提取小數金額。兩個值都由空格分隔。正則表達式適用於Splunk rex中除1.00外的所有內容

例子:

200.00 INR 
2390.11 INR 
1.00 INR 
1789.00 INR 

我使用雷克斯命令行內:

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

使用該命令主要是成功的,但在那裏我的錯誤進場與1.00 INR。

結果:

200.00 
2390.11 
1.00 INR 
1789.00 

任何想法將是有益的。完全免責聲明:我不是一個完整的程序員,也不是我渴望成爲的人,但我確實很喜歡在Splunk上編寫正則表達式。

+0

旁註:我認爲你也應該逃避'.'。 – Nishant

回答

0

有與您當前的正則表達式的一些問題,請嘗試更改[^\s]\d+.\d+以下幾點:

\d+\.\d+ 

您當前的正則表達式不離開.,所以在您正則表達式的.實際上將匹配任何字符。我不確定你想用[^\s]做什麼,因爲它會匹配一個非空白字符,而且看起來你只對數字感興趣。

您當前的正則表達式的「1.00 INR」失敗,因爲1[^\s]匹配,然後你的正則表達式查找一個或多個數字,但下一個字符是一個.

+0

謝謝。這工作很好。我想我很習慣閱讀,直到解析逗號分隔值的時候,我沒有想到將它遺漏出去。 –

+0

沒問題,歡迎來到現場!如果我的答案奏效,您可以[接受它](http://meta.stackexchange.com/a/5235),方法是點擊旁邊複選標記的大綱。 –

0

好吧,我不知道霸王龍,但如果它只是你需要一個普通的OLE正則表達式,這會工作:

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

1個或多個數字,一個小數點,後跟1個或多個數字,並確保它有一個空格和3個字母。

+0

Splunk使用PCRE。 rex只是一個字段上的內聯正則表達式。 [鏈接](http://docs.splunk.com/Documentation/Splunk/latest/SearchReference/rex)謝謝,但爲此。我需要單獨提取貨幣,並可能能夠使用它。 –

相關問題