ক্যাপচারিং গ্রুপ ব্যবহার করে আপনি একাধিক অক্ষরকে একটি একক হিসাবে বিবেচনা করতে পারেন৷ আপনাকে শুধু বন্ধনীর সেটের মধ্যে গোষ্ঠীবদ্ধ করার জন্য অক্ষরগুলি স্থাপন করতে হবে। যেমন −
(.*)(\\d+)(.*)
আপনি যদি একাধিক গ্রুপের সাথে মিল করার চেষ্টা করেন তবে প্রতিটি গ্রুপের ম্যাচের ফলাফল ক্যাপচার করা হয়। গ্রুপ() পদ্ধতিতে নিজ নিজ গ্রুপ নম্বর পাস করে আপনি ফলাফল পেতে পারেন। 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+)(.*)"; //Create a Pattern object Pattern pattern = Pattern.compile(regex); //Now create matcher object. 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+)(.*)"; //Create a Pattern object Pattern pattern = Pattern.compile(regex); //Now create matcher object. 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
দ্রষ্টব্য: নন-ক্যাপচারিং গ্রুপকে গ্রুপ গণনায় অন্তর্ভুক্ত করা হবে না।