我想删除所有出现的"*"但忽略"**",因此,例如,如果我有"testing *single star* and **double star**",则删除后的句子将是"testing single star and **double star**"

我当时想使用replace("*", ""),但是当我尝试使用它时,它摆脱了所有的星星。

我该怎么办?

最佳答案

您可以利用环顾四周

String s = "testing *single star* and **double star**".replaceAll("(?<![*])[*](?![*])", "");


请参见IDEONE demo(结果:testing single star and **double star**

*放在字符类中可以匹配文字星号而无需转义。

(?<![*])是负向后检查,检查星号前是否没有星号,而(?![*])是负向前瞻性,确保匹配星号后没有星号。

关于java - 有没有一种方法可以根据出现次数替换子字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33811460/

10-11 22:38