কম্পিউটার টিউটোরিয়াল

জাভা রেগুলার এক্সপ্রেশনে ক্যাপচারিং গ্রুপ কী বোঝায়?


রেগুলার এক্সপ্রেশন (Regex) হলো ক্যারেক্টারর একটি বিশেষ সিকোয়েন্স যা একটি প্যাটার্নে সঞ্চিত বিশেষ সিনট্যাক্স ব্যবহার করে অন্য স্ট্রিং বা স্ট্রিং সেট খুঁজে বের করতে বা মিলিয়ে দেখাতে সাহায্য করে।

রেগুলার এক্সপ্রেশনে ক্যাপচারিং গ্রুপ একাধিক ক্যারেক্টারকে একটি একক ইউনিট হিসেবে বিবেচনা করতে ব্যবহৃত হয়, যা () দিয়ে প্রকাশ করা হয়। অর্থাৎ, যদি আপনি একাধিক সাব-প্যাটার্নকে পরেনথেসিসের ভিতরে রাখেন, তবে সেগুলো এক গ্রুপ হিসেবে বিবেচিত হয়।

উদাহরণস্বরূপ, প্যাটার্ন [0-9] ০ থেকে ৯ পর্যন্ত ডিজিট মিলিয়ে এবং {5} যেকোনো ৫টি ক্যারেক্টার মিলিয়ে। এই দুটোকে গোষ্ঠীভুক্ত করে ([0-9]{5}) লিখলে সেটি ৫-ডিজিটের একটি সংখ্যা মিলিয়ে।

উদাহরণ

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class CapturingGroupExample {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("আপনার নাম লিখুন: ");
        String name = sc.nextLine();
        System.out.println("জন্ম তারিখ লিখুন (MM/DD/YYYY ফরম্যাটে): ");
        String dob = sc.nextLine();

        // MM/DD/YYYY ফরম্যাটে তারিখ যাচাই করার রেগেক্স
        String regex = "^(1[0-2]|0[1-9])/"   // মাসের জন্য
                     + "(3[01]|[12][0-9]|0[1-9])/" // তারিখের জন্য
                     + "[0-9]{4}$";              // বছরের জন্য

        // Pattern অবজেক্ট তৈরি
        Pattern pattern = Pattern.compile(regex);
        // Matcher অবজেক্ট তৈরি
        Matcher matcher = pattern.matcher(dob);
        boolean result = matcher.matches();

        if (result) {
            System.out.println("দেয়া জন্ম তারিখটি বৈধ");
        } else {
            System.out.println("দেয়া জন্ম তারিখটি অবৈধ");
        }
    }
}

আউটপুট

আপনার নাম লিখুন: কৃষ্ণ
জন্ম তারিখ লিখুন: 09/26/1989
দেয়া জন্ম তারিখটি বৈধ

গ্রুপ এক্সট্রাকশনের উদাহরণ

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class GroupTest {
    public static void main(String[] args) {
        String regex = "(.*)(\\d+)(.*)";
        String input = "This is a sample Text, 1234, with numbers in between.";

        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);

        if (matcher.find()) {
            System.out.println("সম্পূর্ণ মিল: " + matcher.group(0));
            System.out.println("প্রথম গ্রুপ: " + matcher.group(1));
            System.out.println("দ্বিতীয় গ্রুপ: " + matcher.group(2));
            System.out.println("তৃতীয় গ্রুপ: " + matcher.group(3));
        }
    }
}

আউটপুট

সম্পূর্ণ মিল: This is a sample Text, 1234, with numbers in between.
প্রথম গ্রুপ: This is a sample Text, 123
দ্বিতীয় গ্রুপ: 4
তৃতীয় গ্রুপ: , with numbers in between.
  1. জাভাতে StringIndexOutOfBoundsException কী?

  2. জাভাতে ArrayIndexOutOfBoundsException কী?

  3. জাভাতে Double-buffering কী?

  4. জাভা প্রোগ্রামিং কী