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

জাভা রেগুলার এক্সপ্রেশন: ক্যারেক্টার ক্লাস — ইউনিয়ন (Union)


ক্যারেক্টার ক্লাস ও ইউনিয়ন কী?

জাভা রেগুলার এক্সপ্রেশনে ক্যারেক্টার ক্লাস `[ ]` দিয়ে ডিফাইন করা হয়। এটি নির্দিষ্ট সেট থেকে একটি একক ক্যারেক্টার ম্যাচ করে। যেমন [abc] — 'a', 'b' বা 'c' যেকোনো একটি ম্যাচ করবে।

ইউনিয়ন (Union) ভ্যারিয়েন্ট আপনাকে একাধিক রেঞ্জ থেকে ক্যারেক্টার ম্যাচ করতে দেয়। সিনট্যাক্স: [range1[range2]]। উদাহরণস্বরূপ, [a-z[0-9]] মানে — ছোট হাতের অক্ষর (a-z) অথবা সংখ্যা (0-9) যেকোনো একটি।

কোড উদাহরণ

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

public class RegexUnionExample {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("ইনপুট টেক্সট লিখুন: ");
        String input = sc.nextLine();
        
        // ইউনিয়ন রেজেক্স: ছোট হাতের অক্ষর বা ডিজিট
        String regex = "[a-z[0-9]]";
        
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);
        
        int count = 0;
        while (matcher.find()) {
            count++;
        }
        
        System.out.println("(a-z বা 0-9) রেঞ্জ থেকে ক্যারেক্টার সংখ্যা: " + count);
    }
}

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

ইনপুট টেক্সট লিখুন: sample DATA 12345
(a-z বা 0-9) রেঞ্জ থেকে ক্যারেক্টার সংখ্যা: 11

ব্যাখ্যা: "sample" (6 ক্যারেক্টার) + "12345" (5 ডিজিট) = ১১। বড় হাতের "DATA" গণনা হয়নি।

অন্যান্য ইউনিয়ন উদাহরণ

রেজেক্সঅর্থম্যাচ করবে
[a-f[x-z]]a-f বা x-za,b,c,d,e,f,x,y,z
[A-Z[a-z]]বড় হাত বা ছোট হাত অক্ষরসব ইংরেজি অক্ষর
[0-9[aeiou]]ডিজিট বা স্বরবর্ণ0-9, a, e, i, o, u

মনে রাখার বিষয়

  • ইউনিয়ন শুধু ক্যারেক্টার ক্লাসের ভিতরে কাজ করে।
  • নেস্টেড ব্র্যাকেটস `[[]]` ইউনিয়ন নির্দেশ করে।
  • ইন্টারসেকশন (`&&`) এবং সাবট্র্যাকশন (`[^...]`) থেকে আলাদা।

সারসংক্ষেপ

ক্যারেক্টার ক্লাসের ইউনিয়ন ফিচার আপনাকে একাধিক ক্যারেক্টার রেঞ্জ একসাথে স্পেসিফাই করতে দেয়, যা রেজেক্সকে সংক্ষিপ্ত এবং পঠনীয় করে তোলে। [a-z[0-9]] এর মত এক্সপ্রেশন লেখা `[a-z0-9]` লেখার চেয়ে বেশি স্পষ্টভাবে অভিপ্রায় প্রকাশ করে।

  1. জাভাতে CharMatcher ক্লাস

  2. জাভাতে Character ক্লাস

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

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