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

জাভা রেগুলার এক্সপ্রেশন: ক্যারেক্টার সেট থেকে ম্যাচ করা (Character Class Basics)


ক্যারেক্টার ক্লাস বেসিকস

জাভা রেগেক্সে ক্যারেক্টার ক্লাস `[ ]` একটি নির্দিষ্ট সেট থেকে একক ক্যারেক্টার ম্যাচ করে।

সিনট্যাক্স ও উদাহরণ

  • [abc] — 'a', 'b', বা 'c' যেকোনো একটি
  • [a-z] — ছোট হাতের অক্ষর a থেকে z (রেঞ্জ)
  • [^a-z] — ছোট হাতের অক্ষর ছাড়া যেকোনো ক্যারেক্টার (নিগেশন)

উদাহরণ ১: a-z ক্যারেক্টার গণনা

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

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

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

ইনপুট টেক্সট লিখুন: sample data 1234$
a থেকে z পর্যন্ত ক্যারেক্টার সংখ্যা: 10

উদাহরণ ২: নন-অ্যালফাবেটিক ক্যারেক্টার গণনা (নিগেশন)

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

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

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

ইনপুট টেক্সট লিখুন: sample data 1234$
নন-অ্যালফাবেটিক ক্যারেক্টার সংখ্যা: 7

ব্যাখ্যা: স্পেস (১), 1234 (৪), $ (১) + সম্ভবত বড় হাতের অক্ষর = ৭।

কमन ক্যারেক্টার ক্লাস প্যাটার্ন

রেজেক্সনামম্যাচ করবে
[aeiou]স্বরবর্ণ (vowels)a, e, i, o, u
[bcdfghjklmnpqrstvwxyz]ব্যঞ্জনবর্ণ (consonants)সব ছোট হাত ব্যঞ্জন
[A-Za-z]সকল অক্ষরA-Z, a-z
[0-9]ডিজিট0-9
[A-Za-z0-9]আলফানিউমেরিকঅক্ষর + সংখ্যা
[^A-Za-z0-9]নন-আলফানিউমেরিকস্পেশাল ক্যারেক্টার, স্পেস
[\s]হোয়াইটস্পেসস্পেস, ট্যাব, নিউলাইন
[\S]নন-হোয়াইটস্পেসবিজিবল ক্যারেক্টার

সারসংক্ষেপ

ক্যারেক্টার ক্লাস `[ ]` রেগেক্সের ফান্ডামেন্টাল বিল্ডিং ব্লক। রেঞ্জ (`a-z`), নিগেশন (`^`), ইউনিয়ন (`[a-z[0-9]]`), ইন্টারসেকশন (`[a-z&&[m-p]]`) কম্বাইন করে জটিল ক্যারেক্টার সেট ডিফাইন করা যায়। বেসিক `[abc]` থেকে শুরু করে অ্যাডভান্সড `[a-z&&[^aeiou]]` (ব্যঞ্জনবর্ণ) পর্যন্ত — সবই সম্ভব।

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

  2. জাভা রেগেক্স দিয়ে ফিক্সড সেট অফ ক্যারেক্টার ম্যাচ করা

  3. জাভাতে রেগেক্স ব্যবহার করে স্ট্রিং থেকে HTML ট্যাগ এক্সট্র্যাক্ট করা

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