替换所有出现的组

Alk*_*ris 5 java regex replaceall

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

String test = "###,##.##0.0########";
System.out.println(test);
test = test.replaceAll("\\.0(#)", "0");
System.out.println(test);
Run Code Online (Sandbox Code Playgroud)

我试图获得的结果###,##.##0.000000000 基本上,我想要替换所有#尾随的符号.0.我发现这是关于动态替换的,但我不能真正使它工作.

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

vks*_*vks 7

#(?!.*\\.0)
Run Code Online (Sandbox Code Playgroud)

你可以尝试这个0.放置.参见演示.

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


Wik*_*żew 5

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

#(?=#*+$)
Run Code Online (Sandbox Code Playgroud)

(?=#*+$)=正向前瞻,用于检查在字符串结尾#之前前面有0个或更多#符号的任何前导$.编辑:我现在使用占有量词 *+来避免任何性能问题.

演示

IDEONE:

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