matches()यदि पूर्ण स्ट्रिंग का मिलान किया जाता है तो केवल सच वापस आएगा।
रेगेक्स से मेल खाने वाले सबस्ट्रिंग के भीतर अगली घटना find()को खोजने की कोशिश करेंगे । "अगले" पर जोर दें। इसका अर्थ है, find()कई बार कॉल करने का परिणाम समान नहीं हो सकता है। इसके अलावा, उपयोग करके find()आप start()उस स्थिति को वापस करने के लिए कॉल कर सकते हैं, जब सबस्ट्रिंग का मिलान किया गया था।
final Matcher subMatcher = Pattern.compile("\\d+").matcher("skrf35kesruytfkwu4ty7sdfs");
System.out.println("Found: " + subMatcher.matches());
System.out.println("Found: " + subMatcher.find() + " - position " + subMatcher.start());
System.out.println("Found: " + subMatcher.find() + " - position " + subMatcher.start());
System.out.println("Found: " + subMatcher.find() + " - position " + subMatcher.start());
System.out.println("Found: " + subMatcher.find());
System.out.println("Found: " + subMatcher.find());
System.out.println("Matched: " + subMatcher.matches());
System.out.println("-----------");
final Matcher fullMatcher = Pattern.compile("^\\w+$").matcher("skrf35kesruytfkwu4ty7sdfs");
System.out.println("Found: " + fullMatcher.find() + " - position " + fullMatcher.start());
System.out.println("Found: " + fullMatcher.find());
System.out.println("Found: " + fullMatcher.find());
System.out.println("Matched: " + fullMatcher.matches());
System.out.println("Matched: " + fullMatcher.matches());
System.out.println("Matched: " + fullMatcher.matches());
System.out.println("Matched: " + fullMatcher.matches());
उत्पादन होगा:
पाया: गलत
पाया: सही - स्थिति 4
पाया: सही - स्थिति 17
पाया: सही - स्थिति 20
पाया: गलत
पाया: गलत
मिलान किया गया: गलत
-----------
पाया: सच - स्थिति ०
पाया: गलत
पाया: गलत
मिलान: सच है
मिलान: सच है
मिलान: सच है
मिलान: सच है
तो, find()कई बार कॉल करते समय सावधान रहें यदि Matcherऑब्जेक्ट रीसेट नहीं किया गया था, तब भी जब रेगेक्स चारों ओर से घिरा हुआ हो ^और $पूर्ण स्ट्रिंग से मेल खाता हो।
find()कई बार कॉल करने पर अलग-अलग परिणाम मिल सकते हैंMatcher। नीचे मेरा जवाब देखें।