java.util.regex.Matcher क्लास एक इंजन को दर्शाता है जो विभिन्न मिलान ऑपरेशन करता है। इस क्लास के लिए कोई कंस्ट्रक्टर नहीं है, आप java.util.regex.Pattern क्लास के matches() मेथड का उपयोग करके इस क्लास का ऑब्जेक्ट बना/प्राप्त कर सकते हैं।
Matcher क्लास के matches() और find() दोनों मेथड इनपुट स्ट्रिंग में रेगुलर एक्सप्रेशन के अनुसार मिलान खोजने का प्रयास करते हैं। मिलान के मामले में, दोनों true लौटाते हैं और यदि मिलान नहीं मिलता तो दोनों मेथड false लौटाते हैं।
मुख्य अंतर यह है कि matches() मेथड दिए गए इनपुट के पूरे क्षेत्र से मिलान करने का प्रयास करता है यानी यदि आप किसी लाइन में अंक खोजने का प्रयास कर रहे हैं तो यह मेथड केवल तभी true लौटाता है जब क्षेत्र में सभी लाइनों में अंक हों।
उदाहरण 1 (matches() - पूरे इनपुट का मिलान आवश्यक)
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String regex = "(.*)(\\d+)(.*)";
String input = "This is a sample Text, 1234, with numbers in between. "
+ "\n This is the second line in the text "
+ "\n This is third line in the text";
// पैटर्न ऑब्जेक्ट बनाना
Pattern pattern = Pattern.compile(regex);
// मैचर ऑब्जेक्ट बनाना
Matcher matcher = pattern.matcher(input);
if(matcher.matches()) {
System.out.println("मिलान मिला");
} else {
System.out.println("मिलान नहीं मिला");
}
}
}
आउटपुट
मिलान नहीं मिला
जबकि, find() मेथड अगले सबस्ट्रिंग को खोजने का प्रयास करता है जो पैटर्न से मिलान करता है यानी यदि क्षेत्र में कम से कम एक मिलान मिलता है तो यह मेथड true लौटाता है।
यदि आप निम्नलिखित उदाहरण पर विचार करते हैं, तो हम बीच में अंकों वाली एक विशेष लाइन से मिलान करने का प्रयास कर रहे हैं।
उदाहरण 2 (find() - आंशिक मिलान पर्याप्त)
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String regex = "(.*)(\\d+)(.*)";
String input = "This is a sample Text, 1234, with numbers in between. "
+ "\n This is the second line in the text "
+ "\n This is third line in the text";
// पैटर्न ऑब्जेक्ट बनाना
Pattern pattern = Pattern.compile(regex);
// मैचर ऑब्जेक्ट बनाना
Matcher matcher = pattern.matcher(input);
if(matcher.find()) {
System.out.println("मिलान मिला");
} else {
System.out.println("मिलान नहीं मिला");
}
}
}
आउटपुट
मिलान मिला
सारांश
- matches(): संपूर्ण इनपुट अनुक्रम का पैटर्न से मिलान करने का प्रयास करता है।
- find(): इनपुट अनुक्रम में पैटर्न के अगले सबसीक्वेंस को खोजता है।
- उपयोग करें matches() जब आपको पूरे स्ट्रिंग को मान्य करने की आवश्यकता हो (जैसे फॉर्म वैलिडेशन)।
- उपयोग करें find() जब आपको स्ट्रिंग में कहीं भी पैटर्न खोजने की आवश्यकता हो (जैसे टेक्स्ट खोज)।