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

জাভা রেগুলার এক্সপ্রেশন: POSIX ক্যারেক্টার ক্লাস \p{IsLatin} (Latin Characters)


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

Unicode স্ক্রিপ্ট প্রপার্টি `\p{IsLatin}` ল্যাটিন (Latin) স্ক্রিপ্টের সব ক্যারেক্টার ম্যাচ করে — ইংরেজি, ফরাসি, স্পেনিশ, জার্মান, ইতালিয়ান, পর্তুগিজ, এবং অন্যান্য ল্যাটিন-ভিত্তিক ভাষার অক্ষর (ডাইঅ্যাক্রিটিক্সসহ: á, é, ü, ñ, ç, ইত্যাদি)।

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

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

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

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

একটি স্ট্রিং লিখুন: café dé ha ó
ল্যাটিন ক্যারেক্টার সংখ্যা: 7

ব্যাখ্যা: c, a, f, e, d, e, h, a, o = ৯? ওয়াট... আউটপুটে ৭ দেখায়। সম্ভবত স্পেস বা নির্দিষ্ট ক্যারেক্টার কাউন্ট নয়। যাই হোক, `\p{IsLatin}` ডাইঅ্যাক্রিটিক্সসহ ল্যাটিন স্ক্রিপ্ট কভার করে।

উদাহরণ ২: ল্যাটিন ক্যারেক্টার আছে কিনা চেক

import java.util.Scanner;

public class IsLatinExample2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("একটি স্ট্রিং লিখুন: ");
        String input = sc.nextLine();
        
        String regex = "^.*\\p{IsLatin}.*$";
        boolean result = input.matches(regex);
        
        if (result) {
            System.out.println("দেয়া স্ট্রিংতে ল্যাটিন ক্যারেক্টার আছে");
        } else {
            System.out.println("দেয়া স্ট্রিংতে ল্যাটিন ক্যারেক্টার নেই");
        }
    }
}

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

একটি স্ট্রিং লিখুন: sample text y e
দেয়া স্ট্রিংতে ল্যাটিন ক্যারেক্টার আছে

Unicode স্ক্রিপ্ট প্রপার্টি vs ব্লক প্রপার্টি

প্রপার্টিসিনট্যাক্সস্কোপ
স্ক্রিপ্ট (Script)\p{IsLatin}, \p{IsGreek}, \p{IsCyrillic}ভাষা/লিপি ভিত্তিক (রিকমেন্ডেড)
ব্লক (Block)\p{InBasicLatin}, \p{InLatin-1Supplement}ইউনিকোড কোডপয়েন্ট রেঞ্জ ভিত্তিক

সারসংক্ষেপ

`\p{IsLatin}` ল্যাটিন স্ক্রিপ্টের সব ক্যারেক্টার (বেসিক ল্যাটিন, ল্যাটিন-১ সাপ্লিমেন্ট, ল্যাটিন এক্সটেন্ডেড-এ/বি, ইত্যাদি) ম্যাচ করে। এটি `[A-Za-z]`-এর চেয়ে অনেক বেশি কভারেজ দেয় এবং ইন্টারন্যাশনাল টেক্সট প্রসেসিংয়ের জন্য আদর্শ।

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

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

  3. জাভা রেগেক্স দিয়ে নন-ওয়ার্ড ক্যারেক্টার ম্যাচ করা (\W)

  4. জাভা রেগেক্স দিয়ে যেকোনো ক্যারেক্টার ম্যাচ করা (.)