我想在重复的部分中重复一部分。例如,如果分数是0.6666667,我希望得到0.67并且重复部分(6)或0.36363636 0.36和(36)作为匹配组。我尝试在Java中使用捕获组,但我不确定我做得对。这就是我现在所拥有的:
String patt = "(.+?)\\1+";
不幸的是,这与0.003003003匹配为“0”。有没有办法在这里获得“003”?
答案 0 :(得分:1)
我真的没有看到你想要解决的潜在问题。 看起来你想做的不是文字摆弄,而是舍入。
试试这个:
BigDecimal r = new BigDecimal("0.66666667").setScale(2, RoundingMode.HALF_UP);
System.out.println(r);
它会显示:
0.67
同样,对于0.363636...
,它会为您提供0.36
,依此类推。
如果您真的想使用正则表达式,并且所有输入在小数点前都有0
,那么您可以尝试
0\.(.+?)\\1+
答案 1 :(得分:0)
"(.+)\\1+"
应该找到003
在索引2处获取最长序列。