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

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


নিগেশন ক্যারেক্টার ক্লাস কী?

জাভা রেগেক্সে ক্যারেক্টার ক্লাস `[ ]` নির্দিষ্ট সেট থেকে ক্যারেক্টার ম্যাচ করে। নিগেশন (Negation) ভ্যারিয়েন্ট ক্যারেক্টার ক্লাসের শুরুতে ক্যারের (`^`) ব্যবহার করে নির্দিষ্ট সেট ছাড়া সব ক্যারেক্টার ম্যাচ করে। সিনট্যাক্স: [^...]।

উদাহরণ

  • [^abc] — 'a', 'b', 'c' ছাড়া যেকোনো ক্যারেক্টার
  • [^a-z] — ছোট হাতের অক্ষর ছাড়া যেকোনো ক্যারেক্টার
  • [^aeiou] — স্বরবর্ণ (vowel) ছাড়া যেকোনো ক্যারেক্টার (কনসোন্যান্ট, সংখ্যা, স্পেশাল ক্যারেক্টার সব)

কোড উদাহরণ: নন-ভোয়েল ক্যারেক্টার গণনা

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

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

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

ইনপুট টেক্সট লিখুন: sample data
নন-ভোয়েল ক্যারেক্টার সংখ্যা: 7

ব্যাখ্যা: "sample data" -> s, m, p, l, (space), d, t = ৭টি নন-ভোয়েল। 'a', 'e', 'a' বাদ পড়েছে।

নিগেশন রেঞ্জের সাথে কম্বাইন

রেজেক্সঅর্থম্যাচ করবে
[^0-9]সংখ্যা ছাড়া সবঅক্ষর, স্পেস, সিম্বল
[^a-zA-Z]অক্ষর ছাড়া সবসংখ্যা, স্পেস, সিম্বল
[^\s]হোয়াইটস্পেস ছাড়া সববিজিবল ক্যারেক্টার
[^aeiouAEIOU]স্বরবর্ণ ছাড়া সব (বড়+ছোট)কনসোন্যান্ট, সংখ্যা, সিম্বল

গুরুত্বপূর্ণ নোট

  • ক্যারেক্টার ক্লাসের শুরুতেই `^` থাকলে নিগেশন। মাঝপথে থাকলে শুধু লিটারেল `^` ক্যারেক্টার।
  • উদাহরণ: `[a^b]` মানে 'a', '^', বা 'b' — এখানে `^` নিগেশন নয়।
  • নিগেশন ক্যারেক্টার ক্লাস বহুল ক্যারেক্টার ম্যাচ করে, তাই পারফরম্যান্সে কিছুটা ধীর হতে পারে বড় ইনপুটে।

সারসংক্ষেপ

নিগেশন ক্যারেক্টার ক্লাস (`[^...]`) একটি শক্তিশালী ফিচার যা "এই ক্যারেক্টারগুলো ছাড়া যেকোনো কিছু" ম্যাচ করতে দেয়। এটি ভ্যালিডেশন, ফিল্টারিং, এবং টেক্সট প্রসেসিং-এ ব্যাপকভাবে ব্যবহৃত হয়। সঠিক ব্যবহার কোডকে ক্লিন এবং এক্সপ্রেসিভ করে তোলে।

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

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

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

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