ক্যারেক্টার ক্লাস সাবট্র্যাকশন কী?
এক রেঞ্জ থেকে অন্য রেঞ্জ বিয়োগ করে নতুন রেঞ্জ তৈরি করা। জাভায় সরাসরি সাবট্র্যাকশন অপারেটর নেই, কিন্তু নিগেশন (^) এবং ইন্টারসেকশন (&&) কম্বাইন করে করা যায়।
সিনট্যাক্স
[range1&&[^range2]] — range1 থেকে range2 বাদ দিয়ে বাকি।
উদাহরণ: a-l থেকে e-h বাদ
[a-l&&[^e-h]]
// a-l: a,b,c,d,e,f,g,h,i,j,k,l
// ^e-h: e,f,g,h ছাড়া
// ফলাফল: a,b,c,d,i,j,k,l
কোড উদাহরণ
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SubtractionExample {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("ইনপুট টেক্সট লিখুন: ");
String input = sc.nextLine();
// a-l থেকে e-h বাদ
String regex = "[a-l&&[^e-h]]";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
int count = 0;
while (matcher.find()) {
count++;
System.out.print(matcher.group() + " ");
}
System.out.println("\nম্যাচ করা ক্যারেক্টার সংখ্যা: " + count);
}
}
আউটপুট উদাহরণ
ইনপুট টেক্সট লিখুন: abcdefghijklmnopq
a b c d i j k l
ম্যাচ করা ক্যারেক্টার সংখ্যা: 8
আরও সাবট্র্যাকশন উদাহরণ
| রেজেক্স | বেস রেঞ্জ | বাদ দেওয়া রেঞ্জ | ফলাফল |
|---|---|---|---|
[a-z&&[^aeiou]] | a-z | aeiou | ব্যঞ্জনবর্ণ (consonants) |
[0-9&&[^02468]] | 0-9 | ইভেন ডিজিট | অড ডিজিট (1,3,5,7,9) |
[A-Z&&[^AEIOU]] | A-Z | বড় হাত স্বরবর্ণ | বড় হাত ব্যঞ্জনবর্ণ |
[\p{Print}&&[^\p{Punct}]] | প্রিন্টেবল | পাঙ্কচুয়েশন | অ্যালফানিউমেরিক + স্পেস |
সারসংক্ষেপ
ক্যারেক্টার ক্লাস সাবট্র্যাকশন `[base&&[^subtract]]` প্যাটার্ন ব্যবহার করে একটি রেঞ্জ থেকে অন্য রেঞ্জ বাদ দেওয়া যায়। এটি নিগেশন এবং ইন্টারসেকশনের কম্বিনেশন। ব্যঞ্জনবর্ণ, অড নম্বর, স্পেশাল-ক্যারেক্টার-ফ্রি সেট ইত্যাদি তৈরি করতে এটি খুব কাজে আসে।