用于查找重复组的Java模式

时间:2015-07-02 15:16:52

标签: java regex

我想在重复的部分中重复一部分。例如,如果分数是0.6666667,我希望得到0.67并且重复部分(6)或0.36363636 0.36和(36)作为匹配组。我尝试在Java中使用捕获组,但我不确定我做得对。这就是我现在所拥有的:

String patt = "(.+?)\\1+";

不幸的是,这与0.003003003匹配为“0”。有没有办法在这里获得“003”?

2 个答案:

答案 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处获取最长序列。