2016-11-16 4 views
2

をフォーマットする任意の通貨からのセント値を抽出する:正規表現が

$123,456.78 
123,456.78 dollars 
123,456.78 

私は部分的に解決策を作業しています

[\.,]\d\d\D 

解決策の問題は、最後の桁が文字列の最後である場合は "123,456.78"の場合は機能しません。このケースをどうすれば処理できますか? \Dはあなたのパターンで,/.と2桁の数字の後の数字ではない文字が必要であることを

http://java-regex-tester.appspot.com/regex/6af08221-63cb-4c5b-a865-c86fe5e825ff

+0

出力として '78'を入力しますか? – TheLostMind

+0

'\ D'をオプションにするか、正規表現を'(?:\ d +、)*(?:\ d +)\。(\ d +) 'のように変更する、小数点 – Thomas

+1

試してみてください[。、](\ d {2})(?!\ d) ' –

答えて

1

注意。あなたは(それを必要とする)を消費せずに何の数字がないことを確認したい場合は、負の先読みを使用します。

[.,](\d{2})(?!\d) 
      ^^^^^^ 

regex demoを参照してください。

詳細

  • [.,] - ドットまたはカンマ(、さまざまな国では小数点の記号だけでなく、米国をサポートするため)
  • (\d{2}) - グループ1(\d{2}は、キャプチャグループ内で表示されますので、 (...)の場合、Matcher.group(1)を使用してその値にアクセスできます)
  • (?!\d) - 前の2桁の直後に桁がないことを必要とする否定先読みです。

how negative lookahead worksを参照してください。