替换所有出现的组

时间:2015-05-26 09:50:42

标签: java regex replaceall

我想替换字符串中所有出现的组。

String test = "###,##.##0.0########";
System.out.println(test);
test = test.replaceAll("\\.0(#)", "0");
System.out.println(test);

我想要获得的结果是###,##.##0.000000000 基本上,我想替换尾随#的所有.0符号。 我找到了this about dynamic replacement,但我无法真正发挥作用。

最佳解决方案不会考虑要替换的哈希数量(如果这样可以消除任何混淆)。

3 个答案:

答案 0 :(得分:7)

#(?!.*\\.0)

你可以试试这个。0。见。演示。

https://regex101.com/r/yW3oJ9/12

答案 1 :(得分:5)

您可以使用简单的正则表达式来完成任务。

#(?=#*+$)

(?=#*+$) =一个肯定的look-ahead,用于检查在字符串#结尾之前有0个或更多#符号的任何$修改:我现在使用possessive quantifier *+来避免任何性能问题。

请参阅demo

IDEONE

String test = "###,##.##0.0###########################################";
test = test.replaceAll("#(?=#*+$)", "0");
System.out.println(test);

答案 2 :(得分:2)

您可以将文本拆分为“0.0”并仅替换第二部分:

String[] splited = "###,##.##0.0########".split("0.0");
String finalString = splited[0] + "0.0" + splited[1].replaceAll("#","0");