Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Metacharacter Possessive Quantifier [X?+] trong Java Regex


Possessive Quantifier [X?+]

Khớp X xuất hiện một lần hoặc không xuất hiện. Khác với quantifier thông thường: possessive không backtrack.

Ví dụ

package com.tutorialspoint;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PossesiveQuantifierDemo {
    private static final String REGEX = "T?+";
    private static final String INPUT = "abcdTatW";
    public static void main(String[] args) {
        Pattern pattern = Pattern.compile(REGEX);
        Matcher matcher = pattern.matcher(INPUT);
        while (matcher.find()) {
            System.out.println("Match String start(): " + matcher.start());
        }
    }
}

Kết quả

Match String start(): 0
Match String start(): 1
Match String start(): 2
Match String start(): 3
Match String start(): 4
Match String start(): 5
Match String start(): 6
Match String start(): 7
Match String start(): 8

Giải thích

  • Regex T?+ khớp: "T" (1 lần) hoặc "" (0 lần - vị trí giữa các ký tự)
  • Input "abcdTatW" độ dài 8 → 9 vị trí (0-8) đều khớp rỗng hoặc "T" tại vị trí 4
  • Possessive ?+ không backtrack: một khi khớp rỗng tại vị trí, không thử khớp "T" nữa

So sánh Quantifiers

LoạiKý hiệuBacktrack?
Greedy?, *, +Có
Reluctant??, *?, +?Có (tối thiểu)
Possessive?+, *+, ++Không