নিগেশন ক্যারেক্টার ক্লাস কী?
জাভা রেগেক্সে ক্যারেক্টার ক্লাস `[ ]` নির্দিষ্ট সেট থেকে ক্যারেক্টার ম্যাচ করে। নিগেশন (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' — এখানে `^` নিগেশন নয়। - নিগেশন ক্যারেক্টার ক্লাস বহুল ক্যারেক্টার ম্যাচ করে, তাই পারফরম্যান্সে কিছুটা ধীর হতে পারে বড় ইনপুটে।
সারসংক্ষেপ
নিগেশন ক্যারেক্টার ক্লাস (`[^...]`) একটি শক্তিশালী ফিচার যা "এই ক্যারেক্টারগুলো ছাড়া যেকোনো কিছু" ম্যাচ করতে দেয়। এটি ভ্যালিডেশন, ফিল্টারিং, এবং টেক্সট প্রসেসিং-এ ব্যাপকভাবে ব্যবহৃত হয়। সঠিক ব্যবহার কোডকে ক্লিন এবং এক্সপ্রেসিভ করে তোলে।