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

জাভা রেগুলার এক্সপ্রেশন: নেমড ক্যাপচারিং গ্রুপ (Named Capturing Groups)


নেমড ক্যাপচারিং গ্রুপ কী?

জাভা ৭ থেকে নেমড ক্যাপচারিং গ্রুপ সাপোর্ট করা হয়েছে। এটি আপনাকে রেগেক্স গ্রুপগুলোর নাম দিয়ে রেফারেন্স করতে দেয়, যা কোডকে আরও পঠনীয় এবং মেইনটেইনযোগ্য করে তোলে। সিনট্যাক্স: (?<name>pattern)।

কোড উদাহরণ: ফোন নম্বর পার্সিং

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

public class NamedGroupExample {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("ইনপুট টেক্সট লিখুন: ");
        String input = sc.nextLine();
        
        // নামদিহ গ্রুপসহ রেজেক্স: গ্লোবাল কোড-ন্যাশনাল কোড-নম্বর
        String regex = "(?<globalCode>[\\d]{2})-(?<nationalCode>[\\d]{5})-(?<number>[\\d]{6})";
        
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);
        
        while (matcher.find()) {
            System.out.println("Global code: " + matcher.group("globalCode"));
            System.out.println("National code: " + matcher.group("nationalCode"));
            System.out.println("Phone number: " + matcher.group("number"));
        }
    }
}

আউটপুট উদাহরণ

ইনপুট টেক্সট লিখুন: 91-08955-224558
Global code: 91
National code: 08955
Phone number: 224558

নেমড গ্রুপের সুবিধা

  • পঠনীয়তা: `matcher.group(2)` এর চেয়ে `matcher.group("nationalCode")` বেশি বোঝার সহজ।
  • মেইনটেনেবিলিটি: গ্রুপ অর্ডার চেঞ্জ হলে নামদিহ রেফারেন্স ব্রেক হয় না।
  • সেলফ-ডকুমেন্টিং: রেজেক্স প্যাটার্নটি নিজে তার উদ্দেশ্য ব্যাখ্যা করে।

অন্যান্য নেমড গ্রুপ উদাহরণ

রেজেক্সব্যাখ্যা
(?<year>\\d{4})-(?<month>\\d{2})-(?<day>\\d{2})তারিখ পার্সিং (YYYY-MM-DD)
(?<user>\\w+)@(?<domain>[\\w.]+)ইমেইল পার্সিং
(?<protocol>https?)://(?<host>[^/]+)URL পার্সিং
(?<hour>\\d{2}):(?<minute>\\d{2})সময় পার্সিং (HH:MM)

গ্রুপ নামের নিয়ম

  • আলফানিউমেরিক এবং আন্ডারস্কোর (`_`) ব্যবহার করা যায়।
  • সংখ্যা দিয়ে শুরু করা যাবে না।
  • রেজেক্সের ভিতরে প্রতিটি গ্রুপের নাম ইউনিক হতে হবে।

সারসংক্ষেপ

নেমড ক্যাপচারিং গ্রুপ জাভা রেগেক্সকে আরও প্রফেশনাল এবং মেইনটেইনযোগ্য করে তোলে। জটিল পার্সিং লজিক (ডেট, ফোন, URL, ইমেইল) লেখার সময় এটি অবশ্যই ব্যবহার করা উচিত। জাভা ৭+ এ যেকোনো প্রজেক্টে এটি ব্যবহার করা যাবে।

  1. জাভাস্ক্রিপ্ট রেগুলার এক্সপ্রেশনে নামযুক্ত ক্যাপচার গ্রুপ

  2. জাভা রেগুলার এক্সপ্রেশনে (?: re) সাব-এক্সপ্রেশন ব্যাখ্যা

  3. জাভা রেগুলার এক্সপ্রেশনে (re) সাব-এক্সপ্রেশন ব্যাখ্যা

  4. জাভাতে রেগুলার এক্সপ্রেশন ব্যবহার করে স্ট্রিং থেকে নম্বর বের করা