Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.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 需要使用正则表达式从字符串中的十进制数中删除尾随的0_Java_Regex - Fatal编程技术网

Java 需要使用正则表达式从字符串中的十进制数中删除尾随的0

Java 需要使用正则表达式从字符串中的十进制数中删除尾随的0,java,regex,Java,Regex,这是我的正则表达式: ((((?<=(\d\.)(([1-9]))))|((?<=\d)\.[0])))((0)+) 根据要求,它应该从描述中删除尾随的0。上面的正则表达式正在删除零,但在某些情况下失败。就像它在值为0.040时失败一样,有人能给我推荐一个更好的正则表达式来满足所有条件吗 s = s.replaceAll("(\\d\\.\\d*[1-9])0+\\b", "$1") .replaceAll("(\\d)\\.0+\\b", "$1"); 对于1.03

这是我的正则表达式:

((((?<=(\d\.)(([1-9]))))|((?<=\d)\.[0])))((0)+) 
根据要求,它应该从描述中删除尾随的0。上面的正则表达式正在删除零,但在某些情况下失败。就像它在值为
0.040
时失败一样,有人能给我推荐一个更好的正则表达式来满足所有条件吗

s = s.replaceAll("(\\d\\.\\d*[1-9])0+\\b", "$1")
     .replaceAll("(\\d)\\.0+\\b", "$1");

对于1.034000到1.034和1.000这两种情况,根据您评论的预期结果,您只需要从以它们结尾的小数中删除
.0
。 在这种情况下,这应该是可行的:

s = s.replaceAll("([0-9])+[.][0](?![0-9])", "$1");
因此:
123.0
变成了
123

再做一点彻底的零清洗。 一点懒散的匹配和消极的前瞻可以完成这项工作

0*([0-9]+[.][0-9][0-9]*?)0+(?![0-9])
对于本测试示例:

String s = "0.010 00.20200,003.30330;10044.04400M,5.0";
s = s.replaceAll("0*([0-9]+[.][0-9][0-9]*?)0+(?![0-9])", "$1");
s将返回:

0.01 0.202,3.3033;10044.044M,5.0

所需的输出是什么?请尝试我需要构建一个正则表达式,该正则表达式应该能够删除所有在description@AbhayKant:但是你需要精确。那么
354.
呢?是否触摸ABC.000?请发布预期输出。如果值为:-ABC.00,则此操作正常,但条件失败
0.01 0.202,3.3033;10044.044M,5.0