যদি আপনি একটি রেগুলার এক্সপ্রেশন তৈরি করার সময় ঘটনার সংখ্যা নির্দিষ্ট করতে চান তাহলে আপনি কোয়ান্টিফায়ার ব্যবহার করতে পারেন। জাভা তিন ধরনের কোয়ান্টিফায়ার সমর্থন করে যেমন:লোভী কোয়ান্টিফায়ার, অনিচ্ছুক কোয়ান্টিফায়ার এবং পসেসিভ কোয়ান্টিফায়ার।
লোভী কোয়ান্টিফায়ার - লোভী কোয়ান্টিফায়াররা ডিফল্ট কোয়ান্টিফায়ার। একটি লোভী কোয়ান্টিফায়ার ইনপুট স্ট্রিং থেকে যতটা সম্ভব মেলে (সম্ভব দীর্ঘতম ম্যাচ) যদি ম্যাচ না হয় তবে এটি শেষ অক্ষরটি ছেড়ে যায় এবং আবার মেলে।
উদাহরণ
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); System.out.println(""Matched text: ); while (matcher.find()) { System.out.println(matcher.group()); } } }
আউটপুট
Enter input text: Matched text: 45545
অনিচ্ছুক কোয়ান্টিফায়ার - একটি অ-লোভী/অনিচ্ছুক কোয়ান্টিফায়ার যতটা সম্ভব কম মেলে, প্রাথমিকভাবে নন-লোভী কোয়ান্টিফায়ার প্রথম অক্ষরের সাথে মেলে যদি ম্যাচ না হয় তবে এটি ইনপুট স্ট্রিং থেকে অন্য একটি অক্ষর যোগ করে এবং ম্যাচ করার চেষ্টা করে। আপনি যদি একটি "?" লোভী কোয়ান্টিফায়ারের পরে এটি অনিচ্ছুক বা অ-লোভী কোয়ান্টিফায়ার হয়ে যায়।
উদাহরণ
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.println(matcher.group()); } } }
আউটপুট
Enter input text: 12345678 1 2 3 4 5 6 7 8
সম্পত্তিগত পরিমাপক − একটি possessive quantifier একটি লোভী কোয়ান্টিফায়ারের মতই একমাত্র পার্থক্য হল এটি প্রাথমিকভাবে যতগুলি অক্ষর মেলানোর চেষ্টা করে এবং, যদি লোভী কোয়ান্টিফায়ারের মত মিল না হয় তবে এটি পিছিয়ে যায় না৷
আপনি যদি একটি লোভী কোয়ান্টিফায়ারের পরে একটি "+" রাখেন তবে এটি possessive quantifier হয়ে যায়। নিম্নে অধিকারী পরিমাণের তালিকা দেওয়া হল:
উদাহরণ
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(matcher.group()); System.out.println(); } } }
আউটপুট
Enter input text: 45678 45678