यदि आप रेगुलर एक्सप्रेशन बनाते समय घटनाओं की संख्या निर्दिष्ट करना चाहते हैं तो आप क्वांटिफायर्स का उपयोग कर सकते हैं। जावा तीन प्रकार के क्वांटिफायर्स का समर्थन करता है: लालची क्वांटिफायर्स, अनिच्छुक क्वांटिफायर्स और अधिकारपूर्ण क्वांटिफायर्स।
लालची क्वांटिफायर्स − लालची क्वांटिफायर्स डिफ़ॉल्ट क्वांटिफायर्स हैं। एक लालची क्वांटिफायर इनपुट स्ट्रिंग से जितना संभव हो उतना मिलान करता है (सबसे लंबा संभव मिलान) यदि मिलान नहीं हुआ तो यह अंतिम वर्ण को छोड़ देता है और फिर से मिलान करता है।
उदाहरण
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("इनपुट टेक्स्ट दर्ज करें: "); String input = sc.nextLine(); String regex = "[0-9]+"; // Pattern ऑब्जेक्ट बनाना Pattern pattern = Pattern.compile(regex); // String में संकलित पैटर्न मिलान करना Matcher matcher = pattern.matcher(input); System.out.println("मिलान किया गया टेक्स्ट: "); while (matcher.find()) { System.out.println(matcher.group()); } } } आउटपुट
इनपुट टेक्स्ट दर्ज करें: मिलान किया गया टेक्स्ट: 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("इनपुट टेक्स्ट दर्ज करें: "); String input = sc.nextLine(); String regex = "[0-9]+?"; // Pattern ऑब्जेक्ट बनाना Pattern pattern = Pattern.compile(regex); // String में संकलित पैटर्न मिलान करना Matcher matcher = pattern.matcher(input); while (matcher.find()) { System.out.println(matcher.group()); } } } आउटपुट
इनपुट टेक्स्ट दर्ज करें: 12345678 1 2 3 4 5 6 7 8
अधिकारपूर्ण क्वांटिफायर्स − एक अधिकारपूर्ण क्वांटिफायर लालची क्वांटिफायर के समान है, एकमात्र अंतर यह है कि यह प्रारंभ में जितने वर्ण मिलान कर सकता है उतने मिलान करने का प्रयास करता है और, यदि मिलान नहीं हुआ तो लालची क्वांटिफायर के विपरीत यह बैकट्रैक नहीं करता है।
यदि आप लालची क्वांटिफायर के बाद "+" रखते हैं तो यह अधिकारपूर्ण क्वांटिफायर बन जाता है। निम्नलिखित अधिकारपूर्ण क्वांटिफायर्स की सूची है:
उदाहरण
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("इनपुट टेक्स्ट दर्ज करें: "); String input = sc.nextLine(); String regex = "[0-9]++"; // Pattern ऑब्जेक्ट बनाना Pattern pattern = Pattern.compile(regex); // String में संकलित पैटर्न मिलान करना Matcher matcher = pattern.matcher(input); while (matcher.find()) { System.out.print(matcher.group()); System.out.println(); } } } आउटपुट
इनपुट टेक्स्ट दर्ज करें: 45678 45678