我正在尝试编写一个正则表达式来替换字符串中重复的字符。
捕获的是重复的字符也可能是非结果的。
Ex:
Input: abcdebg
Replace by character: x
Expected Output: axcdebg
我一直试图用正则表达式执行此操作:(.).*(\\1)
但是当我进行替换时的结果是:axg
请建议我如何达到预期效果。
谢谢,
窗扇
答案 0 :(得分:2)
这里的问题是你匹配字符串的其余部分,直到重复的字符,这意味着它也被替换。您需要捕获它并再次包含它。
所以,
正则表达式:(.)(.*?\\1)
替换为(对于x):x\2
答案 1 :(得分:0)
只有在输入中找到相同字符时,您才可以使用此基于前瞻性的正则表达式替换字符:
String str = "abcdebg";
String repl = str.replaceFirst("(.)(?=.*\\1)", "x");
//=> axcdebg