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