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

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


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

Unicode প্রপার্টি `\p{IsAlphabetic}` সমস্ত বর্ণমালার অক্ষর (alphabetic characters) ম্যাচ করে — শুধু ইংরেজি নয়, সব ভাষার অক্ষর (ল্যাটিন, গ્રিক, সিরিলিক, দেবনাগরী, ইত্যাদি)।

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

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

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

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

একটি স্ট্রিং লিখুন: sample text
অ্যালফাবেটিক ক্যারেক্টার সংখ্যা: 10

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

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

public class PosixIsAlphabeticExample2 {
    public static void main(String[] args) {
        String regex = "^.*\\p{IsAlphabetic}.*$";
        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());
            }
        }
    }
}

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

৫টি ইনপুট স্ট্রিং লিখুন: 
hello
sample
243test
##$$@
222356

অ্যালফাবেটিক ক্যারেক্টার ধারণকারী স্ট্রিংগুলো:
hello
sample
243test

\p{IsAlphabetic} vs \p{Alpha} vs [a-zA-Z]

প্যাটার্নস্কোপম্যাচ করবে
[a-zA-Z]শুধু ইংরেজিA-Z, a-z
\p{Alpha}POSIX/Unicodeসব ভাষার অক্ষর (legacy)
\p{IsAlphabetic}Unicode প্রপার্টিসব ভাষার অক্ষর (রিকমেন্ডেড)

সারসংক্ষেপ

`\p{IsAlphabetic}` সব ভাষার অক্ষর ম্যাচ করার জন্য সঠিক এবং আধুনিক উপায়। এটি `[a-zA-Z]`-এর চেয়ে বেশি ইনক্লूसিভ এবং ইন্টারন্যাশনালাইজেশন (i18n) রেডি। 멀্টিলিংগুয়াল অ্যাপ্লিকেশনে এটি ব্যবহার করুন।

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

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

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

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