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

জাভা রেগুলার এক্সপ্রেশন: POSIX ক্যারেক্টার ক্লাস \p{Blank}


\p{Blank} ক্যারেক্টার ক্লাস

POSIX ক্যারেক্টার ক্লাস `\p{Blank}` সব ট্যাব (`\t`) এবং স্পেস (` `) ক্যারেক্টার ম্যাচ করে। এটি `[\t ]`-এর সমতুল্য কিন্তু আরও পঠনীয়।

উদাহরণ ১: ব্ল্যাঙ্ক ক্যারেক্টার গণনা

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

public class PosixBlankExample1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("একটি স্ট্রিং লিখুন: ");
        String input = sc.nextLine();
        
        String regex = "[\\p{Blank}]"; // ট্যাব বা স্পেস
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);
        
        int count = 0;
        while (matcher.find()) {
            count++;
        }
        
        System.out.println("ব্ল্যাঙ্ক ক্যারেক্টার সংখ্যা: " + count);
    }
}

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

একটি স্ট্রিং লিখুন: space tab test
ব্ল্যাঙ্ক ক্যারেক্টার সংখ্যা: 2

উদাহরণ ২: ব্ল্যাঙ্ক ক্যারেক্টার সহ স্ট্রিং ফিল্টার

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

public class PosixBlankExample2 {
    public static void main(String[] args) {
        // ব্ল্যাঙ্ক ক্যারেক্টার থাকা স্ট্রিং ম্যাচ
        String regex = "^.*\\p{Blank}.*$";
        
        Scanner sc = new Scanner(System.in);
        System.out.println("৫টি ইনপুট স্ট্রিং লিখুন: ");
        String[] input = new String[5];
        for (int i = 0; i < 5; i++) {
            input[i] = sc.nextLine();
        }
        
        Pattern p = Pattern.compile(regex);
        System.out.println("ব্ল্যাঙ্ক ক্যারেক্টার ধারণকারী স্ট্রিংগুলো:");
        for (int i = 0; i < 5; i++) {
            Matcher m = p.matcher(input[i]);
            if (m.matches()) {
                System.out.println(m.group());
            }
        }
    }
}

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

৫টি ইনপুট স্ট্রিং লিখুন: 
sample data
hello
welcome to tutorialspoint
12345
ab bc cd da

ব্ল্যাঙ্ক ক্যারেক্টার ধারণকারী স্ট্রিংগুলো:
sample data
welcome to tutorialspoint
ab bc cd da

অন্যান্য POSIX ক্যারেক্টার ক্লাস

POSIX ক্লাসজাভা সিনট্যাক্সম্যাচ করবে
alnum\p{Alnum}অক্ষর ও সংখ্যা
alpha\p{Alpha}অক্ষর (A-Z, a-z)
blank\p{Blank}স্পেস ও ট্যাব
cntrl\p{Cntrl}কন্ট্রোল ক্যারেক্টার
digit\p{Digit}সংখ্যা (0-9)
graph\p{Graph}প্রিন্টেবল (স্পেস বাদ)
lower\p{Lower}ছোট হাতের অক্ষর
print\p{Print}প্রিন্টেবল (স্পেস সহ)
punct\p{Punct}পাঙ্কচুয়েশন
space\p{Space}হোয়াইটস্পেস (ব্ল্যাঙ্ক + \n\r\f\v)
upper\p{Upper}বড় হাতের অক্ষর
xdigit\p{XDigit}হেক্সাডেসিমেল ডিজিট

সারসংক্ষেপ

`\p{Blank}` স্পেস এবং ট্যাব ম্যাচ করার জন্য স্ট্যান্ডার্ড POSIX ক্লাস। এটি `[\t ]`-এর চেয়ে বেশি পঠনীয় এবং লোকেল-স্বাধীন। জাভা রেগেক্সে সব POSIX ক্লাস `\p{Name}` সিনট্যাক্সে উপলব্ধ।

  1. জাভা রেজেক্সে POSIX ক্যারেক্টার ক্লাস \p{Alpha}

  2. জাভা রেজেক্সে POSIX ক্যারেক্টার ক্লাস \p{ASCII}

  3. জাভা রেজেক্সে POSIX ক্যারেক্টার ক্লাস \p{Upper}

  4. জাভা রেজেক্সে POSIX ক্যারেক্টার ক্লাস \p{Lower}