कैप्चरिंग समूहों का उपयोग करके आप कई वर्णों को एक इकाई के रूप में मान सकते हैं। आपको केवल समूहीकृत किए जाने वाले वर्णों को कोष्ठक के एक सेट के अंदर रखना होगा। उदाहरण के लिए:
(.*)(\\d+)(.*)
यदि आप कई समूहों से मिलान करने का प्रयास कर रहे हैं तो प्रत्येक समूह के मिलान परिणाम कैप्चर किए जाते हैं। आप इसकी संबंधित समूह संख्या को group() विधि में पास करके किसी समूह का परिणाम प्राप्त कर सकते हैं। 1, 2, 3 आदि (दाएं से बाएं) समूह 0 संपूर्ण मिलान को इंगित करता है।
उदाहरण
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CapturingGroups {
public static void main(String args[]) {
System.out.println("Enter input text");
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
String regex = "(.*)(\\d+)(.*)";
// पैटर्न ऑब्जेक्ट बनाएं
Pattern pattern = Pattern.compile(regex);
// अब मिलानकर्ता ऑब्जेक्ट बनाएं
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
System.out.println("Found value: " + matcher.group(0));
System.out.println("Found value: " + matcher.group(1));
System.out.println("Found value: " + matcher.group(2));
System.out.println("Found value: " + matcher.group(3));
} else {
System.out.println("NO MATCH");
}
}
}
आउटपुट
Enter input text: sample data with 1234 (digits) in middle Found value: sample data with 1234 (digits) in middle Found value: sample data with 123 Found value: 4 Found value: (digits) in middle
नॉन-कैप्चरिंग समूह
नॉन-कैप्चरिंग समूह कैप्चरिंग समूह की समान कार्यक्षमता प्रदान करता है लेकिन यह परिणाम कैप्चर नहीं करता।
उदाहरण के लिए, यदि आपको टेक्स्ट से URL या फोन नंबर का मिलान करने के लिए समूहों का उपयोग करने की आवश्यकता है, चूंकि वांछित उपस्ट्रिंग्स का प्रारंभिक भाग समान है, आपको कुछ समूहों के परिणामों को कैप्चर करने की आवश्यकता नहीं है, ऐसे मामलों में आप नॉन-कैप्चरिंग समूहों का उपयोग कर सकते हैं। एक नॉन-कैप्चरिंग समूह (?: से शुरू होता है और ) पर समाप्त होता है।
उदाहरण
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CapturingGroups {
public static void main(String args[]) {
System.out.println("Enter input text");
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
String regex = "(.*)(?:\\d+)(.*)";
// पैटर्न ऑब्जेक्ट बनाएं
Pattern pattern = Pattern.compile(regex);
// अब मिलानकर्ता ऑब्जेक्ट बनाएं
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
System.out.println("Found value: " + matcher.group(0));
System.out.println("Found value: " + matcher.group(1));
System.out.println("Found value: " + matcher.group(2));
} else {
System.out.println("NO MATCH");
}
}
}
आउटपुट
Enter input text: sample data with 1234 (digits) in middle Found value: sample data with 1234 (digits) in middle Found value: sample data with 123 Found value: (digits) in middle
नोट: नॉन-कैप्चरिंग समूह को समूह गणना में शामिल नहीं किया जाएगा।