检测并替换未配对的降价符号,而不更改配对的符号

时间:2019-09-07 13:45:34

标签: java regex

我有这个

Hello \**how are you\**? I'm fine*

需要得到这个

Hello *how are you*? I'm fine\*

我可以得到

Hello *how are you*? I'm fine*

但是后来我迷路了,因为s.replace("*', "\*")是一个选择

基本上,问题是匹配的(配对)*需要替换为*,而未配对的*需要转义。

2 个答案:

答案 0 :(得分:1)

基本思想是将字符串拆分成单词,然后找出哪些单词具有未配对的“ *”。

String text1 = "*This* is **my** text*";
String[] words = text1.split(" ");
for(int i=0; i<words.length; i++){
    int count = words[i].length() - words[i].replace("*", "").length(); // count the number of '*'
    if(count%2 != 0){ // if it's not paired we can replace with '\*'
        words[i] = words[i].replace("*", "\\*");
    }
}
System.out.println(String.join(" ", words));

Which prints out: *This* is **my** text\*

答案 1 :(得分:0)

有人帮助我解决了这个问题

String text1 = "*This is **my** text* ";
System.out.println(text1.replaceAll("(?<=[^*\\\\]|\\A)[*](?=[^*\\\\]|\\z)", "\\\\*"));

显示\*This is **my** text\*