我已经搜索了很多,但我找不到一个只能选择单个字母并将其加倍的正则表达式,而那些已经是双倍的字母应该保持不变。
我试过
String str = "yahoo";
str = str.replaceAll("(\\w)\\1+", "$0$0");
Run Code Online (Sandbox Code Playgroud)
但由于这(\\w)\\1+选择了所有双元素,因此我的输出变为yahoooo. 我尝试向其添加否定!(\\w)\\1+,但没有成功,输出变得与输入相同。我努力了
str.replaceAll(".", "$0$0");
Run Code Online (Sandbox Code Playgroud)
但这会使每个字符加倍,包括已经加倍的字符。
请帮助编写一个regex可以用双字符替换所有单字符的文件,而双字符应保持不变。
abc -> aabbcc
yahoo -> yyaahhoo (o should remain untouched)
opinion -> ooppiinniioonn
aaaaaabc -> aaaaaabbcc
Run Code Online (Sandbox Code Playgroud)