我想删除所有出现的"*"
但忽略"**"
,因此,例如,如果我有"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/