Java正则表达式中的双问号(??)是一种非贪婪模式的量词,用于匹配尽可能少的字符。与单问号(?)不同,单问号表示可选项,而双问号表示非贪婪模式。 例如,正则表达式"ab*?"将匹配最少的连续的b字符,而正则表达式"ab*"将匹配尽可能多的连续的b字符。 以下是一个示例: String str = "aabbaabb"; String pattern = "a.*?b"; Pattern p = Pattern.compile(pattern); Matcher m = p.matcher(str); while (m.find()) { System.out.println(m.group()); } 输出结果为: aab abb 可以看到,使用双问号(??)可以匹配尽可能少的字符,即使在使用通配符(.*)的情况下也是如此。