在Java中,可以通過在正則表達式中使用?
來實現非貪婪匹配。在正則表達式中,?
可以與*
、+
、?
和{}
等限定符一起使用,使其變為非貪婪匹配。
例如,假設我們有一個字符串input
,想要匹配最短的以a
開頭、以b
結尾的子字符串。我們可以使用.*?
來實現非貪婪匹配,即用.*?ab
來匹配最短的子字符串。
import java.util.regex.*;
public class Main {
public static void main(String[] args) {
String input = "aabab";
Pattern pattern = Pattern.compile(".*?ab");
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
System.out.println("Non-greedy match: " + matcher.group());
}
}
}
在上面的示例中,使用.*?ab
進行非貪婪匹配,最終匹配到的是aab
,而不是整個字符串aabab
。