Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正则表达式从任意货币格式中提取美分值_Java_Regex_Regex Lookarounds - Fatal编程技术网

Java 正则表达式从任意货币格式中提取美分值

Java 正则表达式从任意货币格式中提取美分值,java,regex,regex-lookarounds,Java,Regex,Regex Lookarounds,我需要使用Java正则表达式从下一个可能的值中提取美分值(千位分隔符可以是点和逗号): 我有一个部分有效的解决方案: [\.,]\d\d\D 我的解决方案的问题是,当最后一个数字是字符串的结尾时,它在大小写“123456.78”中不起作用。我怎么处理这个案子 请注意,\D要求在模式中的、/后面有一个非数字的字符和两个数字。如果要确保不使用(需要)任何数字,请使用负前瞻: [.,](\d{2})(?!\d) ^^^^^^ 看 详细信息: [,]-一个点或逗号(在不同的

我需要使用Java正则表达式从下一个可能的值中提取美分值(千位分隔符可以是点和逗号):

我有一个部分有效的解决方案:

[\.,]\d\d\D
我的解决方案的问题是,当最后一个数字是字符串的结尾时,它在大小写“123456.78”中不起作用。我怎么处理这个案子


请注意,
\D
要求在模式中的
/
后面有一个非数字的字符和两个数字。如果要确保不使用(需要)任何数字,请使用负前瞻:

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

详细信息

  • [,]
    -一个点或逗号(在不同的国家,而不仅仅是美国,支持十进制分隔符)
  • (\d{2})
    -组1(由于
    \d{2}
    出现在捕获组
    (…)
    内,因此可以使用
    匹配器访问其值。组(1)
  • (?!\d)
    -一种负向前瞻,要求在前两个数字后面没有数字

查看有关的详细信息。

那么您希望将
78
作为输出?将
\D
设置为可选,或者最好将正则表达式更改为类似
(?:\D+,)*(?:\D+)\(\D+)。(\D+)
,即匹配整个字符串并提取小数点后的数字。尝试
[,](\D{2})(?!\D)
Wiktor,它可以工作,你能给出一个答案并解释一下吗\d部分?您可能还想尝试
replaceAll(“.\\\.”(\\d+\\d*”,“$1”)
[.,](\d{2})(?!\d)
           ^^^^^^