我想獲得循環部分中的重複部分。例如,如果分數是0.6666667,我想得到0.67和重複部分(6)或0.36363636 0.36和(36)作爲匹配組。我嘗試在Java中使用捕獲組,但我不確定我是否正確地做。這裏是我現在所擁有的:找到重複組的Java模式
String patt = "(.+?)\\1+";
不幸的是,這匹配爲0.003003003爲「0」。有沒有辦法在這裏得到「003」?
我想獲得循環部分中的重複部分。例如,如果分數是0.6666667,我想得到0.67和重複部分(6)或0.36363636 0.36和(36)作爲匹配組。我嘗試在Java中使用捕獲組,但我不確定我是否正確地做。這裏是我現在所擁有的:找到重複組的Java模式
String patt = "(.+?)\\1+";
不幸的是,這匹配爲0.003003003爲「0」。有沒有辦法在這裏得到「003」?
我真的不明白你想解決的根本問題。 看來你想要做的不是文字擺弄,而是舍入。
試試這個:
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+"
應該找到003
時間最長序列索引2.
這不是一個有效的正則表達式。你不能從「?」量詞開始。 – fge
我玩過它,並有中途工作的東西。在答案中編輯。 – Unknown
這個問題對於我認爲的正則表達式來說不是任務。首先可以有一個「前綴」,例如1/15 = 0.0666 ... 7(前綴= 0.0),那麼我們必須考慮到最後的密碼是四捨五入的。如果你有0.163163 ...那麼這可能會以2(舍入)或6結尾,沒有完全重複...正則表達式的另一個問題。需要分析字符串的複雜功能。 – maraca