【发布时间】:2017-03-30 10:49:32
【问题描述】:
我需要使用 Java 正则表达式从下一个可能的值中提取美分值(千位分隔符可以是点和逗号):
$123,456.78
123,456.78 dollars
123,456.78
我有部分可行的解决方案:
[\.,]\d\d\D
我的解决方案的问题是,当最后一位数字是字符串的结尾时,它在“123,456.78”的情况下不起作用。我该如何处理这种情况?
http://java-regex-tester.appspot.com/regex/6af08221-63cb-4c5b-a865-c86fe5e825ff
【问题讨论】:
-
所以你想要
78作为输出? -
将
\D设为可选或更好地将您的正则表达式更改为(?:\d+,)*(?:\d+)\.(\d+),即匹配整个字符串并提取小数点后的数字。 -
试试
[.,](\d{2})(?!\d) -
Wiktor,它有效,您能否创建一个答案并解释一下?!\d 部分?
-
你可能还想试试
replaceAll(".*\\.(\\d+)\\D*", "$1")
标签: java regex regex-lookarounds