请详细讲解一下java正则表达式(?d)(.)(?=.*\\1)?

这是为了实现去除字符串中重复字符的功能
public class MaxStringLength {

public static void main(String[] args) {
String s="abcabcb";
//答案为3
int size = 0;
String req = "(?d)(.)(?=.*\\1)";

s=s.replaceAll(req, "");

for(int i= 0;i < s.length();i++){
size += 1;
System.out.print(s.charAt(i));
}
System.out.println();
System.out.println(size);
}
}

慕工程0101907
浏览 1190回答 1
1回答

繁星coding

(?s) 开启单行模式 DOTALL 让. 号匹配任意字符(.) 任意字符 并捕获在第一组(?=.*\1) 这是断言, 表示后面内容将是 任意个字符加上第一组所捕获的内容这样子,如果这整个式子匹配到,表示,第一个捕获组内容在字符串中,至少出现两次,替换为 "" 空串.
打开App,查看更多内容
随时随地看视频慕课网APP