0

splunkでレックスを使用して、金額と3桁の通貨コードを含むフィールドから小数の金額を抽出しています。両方の値はスペースで区切られます。

例:

200.00 INR
2390.11 INR
1.00 INR
1789.00 INR

私はrexコマンドをインラインで使用しています:

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

このコマンドの使用はほとんど成功していますが、私のエラーが発生するのは1.00インドルピーです。

結果:

200.00
2390.11
1.00 INR
1789.00

どんなアイデアも役に立ちます。完全な免責事項:私は完全なプログラマーではありませんし、そうなることも望んでいませんが、Splunkで正規表現を書くことは楽しんでいます。

4

2 に答える 2

0

現在の正規表現にはいくつかの問題があります[^\s]\d+.\d+。次のように変更してみてください。

\d+\.\d+

現在の正規表現はをエスケープしないため、.正規.表現内のは実際にはどの文字とも一致します。[^\s]これは空白以外の単一の文字と一致し、数字だけに関心があるように見えるため、何をしようとしているのかよくわかりません。

1がに一致するため、現在の正規表現は「1.00 INR」で失敗し[^\s]ます。次に、正規表現は1つ以上の数字を検索しますが、次の文字は.。です。

于 2012-09-21T18:36:19.737 に答える
0

レックスについてはわかりませんが、必要な単純な正規表現である場合、これは機能します。

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

1 つ以上の数字、その後に 10 進数、1 つ以上の数字が続き、その後にスペースと 3 文字が続くことを確認します。

于 2012-09-21T18:36:46.480 に答える