কোয়ান্টিফায়ার কী?
কোয়ান্টিফায়ার রেগেক্সে কতবার একটি প্যাটার্ন রিপিট হবে তা নির্দেশ করে। জাভা রেগেক্সে নিচের কোয়ান্টিফায়ারগুলো সাপোর্টেড:
কোয়ান্টিফায়ার টেবিল
| কোয়ান্টিফায়ার | ব্যাখ্যা | উদাহরণ |
|---|---|---|
re* | শূন্য বা অধিক বার | [0-9]*: ০ বা অধিক ডিজিট |
re? | শূন্য বা এক বার | [0-9]?: ০ বা ১ ডিজিট |
re+ | এক বা অধিক বার | [0-9]+: ১ বা অধিক ডিজিট |
re{n} | ঠিক n বার | [0-9]{3}: ঠিক ৩ ডিজিট |
re{n,} | কমপক্ষে n বার | [0-9]{3,}: কমপক্ষে ৩ ডিজিট |
re{n,m} | n থেকে m বার | [0-9]{2,5}: ২ থেকে ৫ ডিজিট |
কোড উদাহরণ: ৩ থেকে ৬ ডিজিট যাচাই
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class QuantifierExample {
public static void main(String[] args) {
String regex = "[0-9]{3,6}"; // ৩ থেকে ৬ ডিজিট
Scanner sc = new Scanner(System.in);
System.out.println("৫টি ইনপুট স্ট্রিং লিখুন: ");
String[] input = new String[5];
for (int i = 0; i < 5; i++) {
input[i] = sc.nextLine();
}
Pattern p = Pattern.compile(regex);
System.out.println("ম্যাচ করা ভ্যালুগুলো:");
for (int i = 0; i < 5; i++) {
Matcher m = p.matcher(input[i]);
if (m.matches()) { // matches() = পুরো স্ট্রিং ম্যাচ
System.out.println(m.group() + ": স্বীকৃত");
}
}
}
}
আউটপুট উদাহরণ
৫টি ইনপুট স্ট্রিং লিখুন:
12
154
4587
478365
4578952
ম্যাচ করা ভ্যালুগুলো:
154: স্বীকৃত
4587: স্বীকৃত
478365: স্বীকৃত
ব্যাখ্যা: ১২ (২ ডিজিট) — রিজেক্ট। ১৫৪ (৩ ডিজিট) — এক্সেপ্ট। ৪৫৮৭ (৪ ডিজিট) — এক্সেপ্ট। ৪৭৮৩৬৫ (৬ ডিজিট) — এক্সেপ্ট। ৪৫৭৮৯৫২ (৭ ডিজিট) — রিজেক্ট।
গ্রিডি, রিলাক্ট্যান্ট, পজেসিভ — ত্রयी
| মোড | সিনট্যাক্স | আচরণ |
|---|---|---|
| গ্রিডি (ডিফল্ট) | +, *, ?, {n,m} | সর্বোচ্চ ম্যাচ, ব্যাকট্র্যাক করে |
| রিলাক্ট্যান্ট | +?, *?, ??, {n,m}? | ন্যূনতম ম্যাচ, ব্যাকট্র্যাক করে না (ফরওয়ার্ড) |
| পজেসিভ | ++, *+, ?+, {n,m}+ | সর্বোচ্চ ম্যাচ, ব্যাকট্র্যাক করে না |
সারসংক্ষেপ
কোয়ান্টিফায়ার রেগেক্সের হৃদয়। `{n,m}` সবচেয়ে ফ্লেক্সিবল। গ্রিডি ডিফল্ট, রিলাক্ট্যান্ট (`?`) ন্যূনতম, পজেসিভ (`+`) ব্যাকট্র্যাকিং-ফ্রি। সঠিক কোয়ান্টিফায়ার বেছে নেওয়া রেজেক্সকে দ্রুত, সঠিক এবং রিডেবল করে তোলে।