লোভী কোয়ান্টিফায়াররা ডিফল্ট কোয়ান্টিফায়ার। একটি লোভী কোয়ান্টিফায়ার ইনপুট স্ট্রিং থেকে যতটা সম্ভব মেলে (সম্ভব দীর্ঘতম ম্যাচ) যদি ম্যাচ না হয় তবে এটি শেষ অক্ষরটি ছেড়ে যায় এবং আবার মেলে।
যেখানে একটি অনিচ্ছুক বা, অ-লোভী কোয়ান্টিফায়ার যতটা সম্ভব কম মেলে, প্রাথমিকভাবে নন-লোভী কোয়ান্টিফায়ার প্রথম অক্ষরের সাথে মেলে যদি ম্যাচ না হয় তবে এটি ইনপুট স্ট্রিং থেকে অন্য একটি অক্ষর যোগ করে এবং ম্যাচ করার চেষ্টা করে।
আপনি যদি একটি "?" একটি লোভী কোয়ান্টিফায়ারের পরে এটি অনিচ্ছুক বা অ-লোভী কোয়ান্টিফায়ার হয়ে যায়। নিম্নে অনিচ্ছুক কোয়ান্টিফায়ার −
তালিকা দেওয়া হলকোয়ান্টিফায়ার | বিবরণ |
---|---|
re*? | শূন্য বা তার বেশি ঘটনা মেলে। |
আবার?? | শূন্যের সাথে মেলে বা, ১টি ঘটনা। |
re+? | এক বা একাধিক ঘটনার সাথে মেলে। |
পুনরায়{n}? | ঘটনার সাথে হুবহু মেলে। |
re{n, }? | অন্তত n ঘটনার সাথে মেলে। |
re{n, m}? | অন্তত n এবং সর্বাধিক m ঘটনার সাথে মেলে। |
উদাহরণ
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(); } } }
আউটপুট
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