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

জাভা রেগুলার এক্সপ্রেশন: ক্যারেক্টার ক্লাস — রেঞ্জ (Range)


ক্যারেক্টার ক্লাস রেঞ্জ কী?

জাভা রেগেক্সে ক্যারেক্টার ক্লাস `[ ]` একটি নির্দিষ্ট সেট থেকে একক ক্যারেক্টার ম্যাচ করে। রেঞ্জ (Range) ভ্যারিয়েন্ট আপনাকে একটি ক্রমাগত ক্যারেক্টার সিকোয়েন্স স্পেসিফাই করতে দেয় হাইফন (`-`) ব্যবহার করে।

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

  • [a-z] — ছোট হাতের ইংরেজি অক্ষর a থেকে z
  • [A-Z] — বড় হাতের ইংরেজি অক্ষর A থেকে Z
  • [0-9] — সংখ্যা 0 থেকে 9
  • [^A-Z] — বড় হাতের অক্ষর বাড়তি যেকোনো ক্যারেক্টার (নিগেশন সহ রেঞ্জ)

উদাহরণ ১: ছোট হাতের অক্ষর গণনা

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

public class RegexRangeExample1 {
    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 5423 #@ %*&
রেঞ্জ (a-z) থেকে ক্যারেক্টার সংখ্যা: 10

উদাহরণ ২: বড় হাতের অক্ষর নেই কিনা যাচাই (নিগেটিভ রেঞ্জ)

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

public class RegexRangeExample2 {
    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);
        
        if (matcher.find()) {
            System.out.println("ম্যাচ হয়েছে (বড় হাতের অক্ষর ছাড়া ক্যারেক্টার পাওয়া গেছে)");
        } else {
            System.out.println("ম্যাচ হয়নি (শুধু বড় হাতের অক্ষর আছে)");
        }
    }
}

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

ইনপুট টেক্সট লিখুন: sample data
ম্যাচ হয়েছে (বড় হাতের অক্ষর ছাড়া ক্যারেক্টার পাওয়া গেছে)

ইনপুট টেক্সট লিখুন: SAMPLEDATA
ম্যাচ হয়নি (শুধু বড় হাতের অক্ষর আছে)

রেঞ্জ সংক্রান্ত টিপস

রেজেক্সব্যাখ্যা
[a-zA-Z]সব ইংরেজি অক্ষর (বড়+ছোট)
[a-zA-Z0-9]আলফানিউমেরিক (অক্ষর+সংখ্যা)
[^a-zA-Z0-9]নন-আলফানিউমেরিক (স্পেশাল ক্যারেক্টার)
[a-m]a থেকে m পর্যন্ত ছোট হাত
[5-9]5 থেকে 9 পর্যন্ত সংখ্যা

সারসংক্ষেপ

রেঞ্জ ভ্যারিয়েন্ট রেগেক্সকে সংক্ষিপ্ত ও পঠনীয় করে। `[a-z]` লেখা `[abcdefghijklmnopqrstuvwxyz]` লেখার চেয়ে অনেক সহজ এবং কম ত্রুটিসংভাব্য। নেগেশন (`^`) রেঞ্জের সাথে কম্বাইন করে "এই রেঞ্জ ছাড়া সব কিছু" এর মত জটিল প্যাটার্নও সহজে লেখা যায়।

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

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

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

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