Java Reflection প্যাকেজে Grouping এর ধারণাটি মূলত Regular Expressions (Regex) এর সাথে সম্পর্কিত। Parentheses বা ব্র্যাকেট () ব্যবহার করে আপনি grouping তৈরি করতে পারেন, যা প্যাটার্নের একটি অংশকে একত্রিত করে। এটি রেগুলার এক্সপ্রেশন (Regex) এর একটি শক্তিশালী ফিচার, যা স্ট্রিং ম্যানিপুলেশনে ব্যবহার করা হয়।
Grouping in Regular Expressions:
() (Parentheses) ব্যবহার করে আপনি রেগুলার এক্সপ্রেশনে একটি গ্রুপ তৈরি করতে পারেন। এই গ্রুপিংয়ের মাধ্যমে আপনি একটি নির্দিষ্ট অংশের মধ্যে যে কোনো প্যাটার্ন মিলালে তার উপর কাজ করতে পারবেন এবং সেই অংশের মান বা ম্যাচগুলো আলাদাভাবে সংগ্রহ করতে পারবেন।
Grouping এর সুবিধা:
- এটি স্ট্রিংয়ের অংশবিশেষ মিলানোর জন্য ব্যবহৃত হয়।
- গ্রুপের সাহায্যে আপনি একাধিক অংশের জন্য মিল পাওয়া ফলাফল পেতে পারেন।
- রেফারেন্স পেতে সাহায্য করে, যেমন স্ট্রিংয়ের মিল পাওয়া অংশ আলাদাভাবে বের করা।
Grouping উদাহরণ:
ধরা যাক, আমরা একটি প্যাটার্নে কিছু শব্দ গ্রুপ করতে চাই এবং পরবর্তীতে তাদের আলাদা আলাদা করে বের করতে চাই।
Parentheses ব্যবহার করে Group তৈরি করা:
import java.util.regex.*;
public class GroupingExample {
public static void main(String[] args) {
String text = "My phone number is 123-456-7890 and my address is 123 Main St.";
// Regular Expression with Grouping (using parentheses)
Pattern pattern = Pattern.compile("(\\d{3})-(\\d{3})-(\\d{4})");
Matcher matcher = pattern.matcher(text);
// Searching for matches
if (matcher.find()) {
// Group 1: Area code, Group 2: Middle part, Group 3: Last part of the phone number
System.out.println("Full phone number: " + matcher.group(0)); // Entire match
System.out.println("Area code: " + matcher.group(1)); // First group
System.out.println("Middle part: " + matcher.group(2)); // Second group
System.out.println("Last part: " + matcher.group(3)); // Third group
}
}
}
ব্যাখ্যা:
(\\d{3})-(\\d{3})-(\\d{4}): এখানে তিনটি গ্রুপ তৈরি করা হয়েছে, যা স্ট্রিংয়ে তিনটি সংখ্যার অংশকে আলাদা করে মিলাবে।\\d{3}: ৩টি ডিজিট, যা ফোন নাম্বারের প্রথম অংশ (এলাকা কোড) হিসেবে গ্রুপ ১ (Group 1) হবে।\\d{3}: পরবর্তী ৩টি ডিজিট, যা ফোন নাম্বারের মধ্যবর্তী অংশ হবে (Group 2)।\\d{4}: পরবর্তী ৪টি ডিজিট, যা ফোন নাম্বারের শেষ অংশ হবে (Group 3)।
matcher.group(0): এটি পুরো মিল হওয়া প্যাটার্নকে ফেরত দেয়, অর্থাৎ পুরো ফোন নাম্বার।matcher.group(1),matcher.group(2),matcher.group(3): এগুলি বিভিন্ন গ্রুপের আলাদা আলাদা অংশকে ফেরত দেয়, যেমন প্রথম ৩ ডিজিট (এলাকা কোড), মধ্যবর্তী ৩ ডিজিট, এবং শেষ ৪ ডিজিট।
আউটপুট:
Full phone number: 123-456-7890
Area code: 123
Middle part: 456
Last part: 7890
Group Numbering:
group(0)হল পুরো মিল (entire match)।group(1),group(2),group(3)ইত্যাদি হল গ্রুপিংয়ের অংশবিশেষ, যা আপনি আলাদাভাবে এক্সেস করতে পারেন।
Named Groups (Java 7 and later):
Java 7 থেকে, আপনি গ্রুপের জন্য নামও দিতে পারেন, যা গ্রুপের নাম দিয়ে তাকে রেফারেন্স করতে সাহায্য করে। এটি (?<name>...) সিনট্যাক্সে করা হয়।
Named Group Example:
import java.util.regex.*;
public class NamedGroupExample {
public static void main(String[] args) {
String text = "My phone number is 123-456-7890.";
// Regular Expression with Named Grouping
Pattern pattern = Pattern.compile("(?<areaCode>\\d{3})-(?<middlePart>\\d{3})-(?<lastPart>\\d{4})");
Matcher matcher = pattern.matcher(text);
// Searching for matches
if (matcher.find()) {
// Accessing named groups
System.out.println("Full phone number: " + matcher.group(0)); // Entire match
System.out.println("Area code: " + matcher.group("areaCode")); // Named group "areaCode"
System.out.println("Middle part: " + matcher.group("middlePart")); // Named group "middlePart"
System.out.println("Last part: " + matcher.group("lastPart")); // Named group "lastPart"
}
}
}
ব্যাখ্যা:
(?<areaCode>\\d{3}):areaCodeনামের একটি গ্রুপ তৈরি করেছে, যা ৩ ডিজিটের সংখ্যা মিলাবে।matcher.group("areaCode"): গ্রুপের নাম দিয়ে আমরা সে গ্রুপের মান পেতে পারি।
আউটপুট:
Full phone number: 123-456-7890
Area code: 123
Middle part: 456
Last part: 7890
- Grouping একটি রেগুলার এক্সপ্রেশন ফিচার যা স্ট্রিংয়ের অংশবিশেষ মিলিয়ে আলাদা করার জন্য ব্যবহৃত হয়।
- Parentheses ব্যবহার করে আপনি প্যাটার্নে গ্রুপ তৈরি করতে পারেন এবং সেই গ্রুপের মান আলাদাভাবে অ্যাক্সেস করতে পারেন।
- Named Groups Java 7 থেকে সমর্থিত, যেখানে আপনি গ্রুপের জন্য নামও দিতে পারেন, যা কোডকে আরও পরিষ্কার এবং সহজবোধ্য করে তোলে।
Read more