Bộ định lượng tham lam là bộ định lượng mặc định. Một bộ định lượng tham lam khớp càng nhiều càng tốt từ chuỗi đầu vào (khớp dài nhất có thể) nếu không khớp xảy ra, nó sẽ để lại ký tự cuối cùng và khớp lại.
Trong khi bộ định lượng miễn cưỡng hoặc không tham lam khớp với số lượng ít nhất có thể, ban đầu bộ định lượng không tham lam khớp với ký tự đầu tiên nếu không xảy ra khớp, nó sẽ thêm một ký tự khác từ chuỗi đầu vào và cố gắng khớp.
Nếu bạn đặt dấu "?" sau một bộ định lượng tham lam nó trở thành bộ định lượng miễn cưỡng hoặc không tham lam. Sau đây là danh sách các bộ định lượng miễn cưỡng -
Bộ định lượng | Mô tả |
---|---|
lại *? | Đối sánh với số lần xuất hiện không hoặc nhiều hơn. |
lại ?? | Đối sánh 0 hoặc 1 lần xuất hiện. |
lại +? | Đối sánh một hoặc nhiều lần xuất hiện. |
lại {n}? | Đối sánh chính xác n lần xuất hiện. |
lại {n,}? | Đối sánh ít nhất n lần xuất hiện. |
lại {n, m}? | Đối sánh ít nhất n và nhiều nhất m lần xuất hiện. |
Ví dụ
import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Enter input text: "); String input = sc.nextLine(); String regex = "[0-9]+?"; //Creating a pattern object Pattern pattern = Pattern.compile(regex); //Matching the compiled pattern in the String Matcher matcher = pattern.matcher(input); while (matcher.find()) { System.out.print("Pattern found from " + matcher.start()+ " to " + (matcher.end()-1)+"::"); System.out.print(matcher.group()); System.out.println(); } } }
Đầu ra
Enter input text: 12345678 Pattern found from 0 to 0::1 Pattern found from 1 to 1::2 Pattern found from 2 to 2::3 Pattern found from 3 to 3::4 Pattern found from 4 to 4::5 Pattern found from 5 to 5::6 Pattern found from 6 to 6::7 Pattern found from 7 to 7::8