Matcher Java如何實(shí)現(xiàn)非貪婪匹配

小樊
89
2024-07-20 17:10:56

在Java中,可以通過(guò)在正則表達(dá)式中使用?來(lái)實(shí)現(xiàn)非貪婪匹配。在正則表達(dá)式中,?可以與*+、?{}等限定符一起使用,使其變?yōu)榉秦澙菲ヅ洹?/p>

例如,假設(shè)我們有一個(gè)字符串input,想要匹配最短的以a開(kāi)頭、以b結(jié)尾的子字符串。我們可以使用.*?來(lái)實(shí)現(xiàn)非貪婪匹配,即用.*?ab來(lái)匹配最短的子字符串。

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進(jìn)行非貪婪匹配,最終匹配到的是aab,而不是整個(gè)字符串aabab。

0