Character Classes এবং POSIX Character Classes

জাভা রেজেক্স (Java Regex) - Java Technologies

291

Java Reflection Package এবং Character Classes এর মধ্যে পার্থক্য রয়েছে, তবে এখানে Character Classes এবং POSIX Character Classes সম্পর্কে আলোচনা করা হচ্ছে, যা Java Regular Expressions (Regex) এ ব্যবহৃত হয়। Java Reflection প্যাকেজ মূলত ক্লাস, মেথড, ফিল্ড এবং কনস্ট্রাক্টর সম্পর্কে রানটাইমে তথ্য সংগ্রহ এবং ম্যানিপুলেশন করতে ব্যবহৃত হয়, যেখানে Character Classes এবং POSIX Character Classes রেগুলার এক্সপ্রেশনে স্ট্রিং ম্যানিপুলেশন এবং প্যাটার্ন ম্যাচিংয়ের জন্য ব্যবহৃত হয়।

Character Classes in Regular Expressions:

Character Classes হল রেগুলার এক্সপ্রেশন (Regex) এর একটি গুরুত্বপূর্ণ অংশ, যার মাধ্যমে আপনি একটি নির্দিষ্ট সেটের মধ্যে একটি চরিত্র নির্বাচন করতে পারেন। এই ক্লাসগুলি সাধারনত [] ব্র্যাকেটের মধ্যে রাখা হয় এবং এর মাধ্যমে বিভিন্ন ধরনের চরিত্রের প্যাটার্ন তৈরি করা হয়।

বেসিক Character Classes:

  1. [abc]:
    • এটি এমন একটি প্যাটার্ন যা a, b, অথবা c এর মধ্যে যেকোনো একটি চরিত্র মেলে।
    • উদাহরণ: "apple", "bat", "cat"
  2. [^abc]:
    • এটি একটি নেগেটেড বা বাদ দেওয়া চরিত্র ক্লাস, যেখানে a, b, এবং c ছাড়া অন্য যেকোনো চরিত্র মেলে।
    • উদাহরণ: "dog", "elephant", "zebra"
  3. [a-z]:
    • এটি ছোট হাতের অক্ষরের জন্য প্যাটার্ন মেলে (a থেকে z পর্যন্ত)।
    • উদাহরণ: "apple", "banana"
  4. [A-Z]:
    • এটি বড় হাতের অক্ষরের জন্য প্যাটার্ন মেলে (A থেকে Z পর্যন্ত)।
    • উদাহরণ: "APPLE", "BANANA"
  5. [a-zA-Z]:
    • এটি ছোট এবং বড় হাতের অক্ষরগুলির জন্য প্যাটার্ন মেলে।
    • উদাহরণ: "apple", "Apple", "Banana"
  6. [0-9]:
    • এটি একটি ডিজিট (0 থেকে 9) মেলে।
    • উদাহরণ: "123", "456"
  7. [a-zA-Z0-9]:
    • এটি ছোট হাতের অক্ষর, বড় হাতের অক্ষর, এবং ডিজিট (0-9) মেলে।
    • উদাহরণ: "abc123", "Xyz789"

POSIX Character Classes in Regular Expressions:

POSIX Character Classes হল রেগুলার এক্সপ্রেশন এর একটি বিশেষ ধরনের গ্রুপ যা ইউনিকোডের উপর ভিত্তি করে কিছু নির্দিষ্ট চরিত্রের গ্রুপিং করতে সহায়তা করে। এগুলি POSIX স্ট্যান্ডার্ডে নির্ধারিত হয়েছে এবং সাধারণত জাভা বা অন্যান্য ইউনিকোড সাপোর্টিং ভাষায় ব্যবহৃত হয়।

POSIX Character Classes:

POSIX Character Classes শুধুমাত্র একাধিক নির্দিষ্ট ধরনের অক্ষরের জন্য প্যাটার্ন মেলানোর জন্য ব্যবহৃত হয়। এর মধ্যে সাধারণত \p{} এবং \P{} (পজিটিভ এবং নেগেটিভ সিকোয়ারেন্স) ব্যবহৃত হয়।

  1. \p{Lower}:
    • এটি ছোট হাতের অক্ষর মেলে (অর্থাৎ a-z)।
    • উদাহরণ: "apple", "banana"
  2. \p{Upper}:
    • এটি বড় হাতের অক্ষর মেলে (অর্থাৎ A-Z)।
    • উদাহরণ: "APPLE", "BANANA"
  3. \p{Digit}:
    • এটি ডিজিট (0-9) মেলে।
    • উদাহরণ: "123", "456"
  4. \p{Alpha}:
    • এটি শুধু অক্ষর মেলে, এমনকি যদি সেটা বড় হাতের বা ছোট হাতের হয়।
    • উদাহরণ: "apple", "BANANA"
  5. \p{Alnum}:
    • এটি অক্ষর বা ডিজিটের সাথে মেলে।
    • উদাহরণ: "abc123", "Xyz789"
  6. \p{Space}:
    • এটি স্পেস, ট্যাব, নিউলাইন বা অন্যান্য হোয়াইটস্পেস ক্যারেক্টার মেলে।
    • উদাহরণ: " ", "\t", "\n"
  7. \p{Word}:
    • এটি একটি শব্দের অক্ষর মেলে, যা অক্ষর, ডিজিট বা আন্ডারস্কোর _ হতে পারে।
    • উদাহরণ: "word1", "variable_123"
  8. \p{Graph}:
    • এটি এমন সব ক্যারেক্টার মেলে যা প্রিন্ট করা যায়, অর্থাৎ স্পেস ছাড়া যেকোনো গ্রাফিক্যাল ক্যারেক্টার।
    • উদাহরণ: "!", "@123", "#", "$"
  9. \p{Punct}:
    • এটি যেকোনো পাঙ্কচুয়েশন চিহ্ন মেলে, যেমন !, ?, @, #, . ইত্যাদি।
  10. \P{}:
    • এটি নেগেটিভ POSIX প্যাটার্ন, যা পজিটিভের বিপরীতে কাজ করে। উদাহরণ: \P{Lower} ছোট হাতের অক্ষরের বাইরে থাকা সব চরিত্র মেলে।

POSIX Character Class Example:

import java.util.regex.*;

public class POSIXExample {
    public static void main(String[] args) {
        String text = "apple 123 BANANA @#!";

        // Match any word character (letters and digits)
        Pattern pattern = Pattern.compile("\\p{Alnum}+");  // Matches any alphanumeric word
        Matcher matcher = pattern.matcher(text);

        while (matcher.find()) {
            System.out.println("Found: " + matcher.group());
        }
    }
}

আউটপুট:

Found: apple
Found: 123
Found: BANANA

ব্যাখ্যা:

  • এখানে \p{Alnum}+ প্যাটার্নটি স্ট্রিংয়ের মধ্যে যে কোনো অক্ষর বা ডিজিট (অথবা তাদের সম্মিলন) খুঁজে বের করছে। এই ক্ষেত্রে, এটি apple, 123, এবং BANANA মেলাবে।
  • Character Classes এবং POSIX Character Classes রেগুলার এক্সপ্রেশন ব্যবহারের ক্ষেত্রে স্ট্রিংয়ে নির্দিষ্ট ধরনের অক্ষর বা ক্যারেক্টারের গ্রুপ নির্বাচন করতে সহায়তা করে।
  • POSIX Character Classes বিশেষত Unicode এর ভিত্তিতে কাজ করে এবং কিছু নির্দিষ্ট ধরনের অক্ষর শনাক্ত করতে ব্যবহৃত হয় যেমন ছোট হাতের অক্ষর (\p{Lower}), বড় হাতের অক্ষর (\p{Upper}), ডিজিট (\p{Digit}) ইত্যাদি।
  • এই সকল ক্লাসগুলো রেগুলার এক্সপ্রেশনে স্ট্রিং ম্যানিপুলেশন এবং প্যাটার্ন ম্যাচিংকে আরও সহজ, শক্তিশালী এবং নমনীয় করে তোলে।
Content added By

Java Regular Expressions (Regex) একটি শক্তিশালী টুল যা আপনাকে নির্দিষ্ট প্যাটার্নের সাথে টেক্সট ম্যানিপুলেট বা ম্যাচ করতে সাহায্য করে। Custom Character Classes তৈরি করা একটি গুরুত্বপূর্ণ টেকনিক যা আপনাকে regex প্যাটার্নে আপনার নিজস্ব ক্যারেক্টার সীমা নির্ধারণ করতে দেয়।

Custom Character Classes এর ধারণা:

Custom Character Classes তৈরি করতে [ ] (ব্র্যাকেট) ব্যবহার করা হয়। এর মধ্যে, আপনি নির্দিষ্ট ক্যারেক্টার বা ক্যারেক্টারের রেঞ্জ (যেমন, a-z, 0-9) প্রদান করতে পারেন। এছাড়া, [^ ] ব্যবহার করে আপনি negation বা inversion করতে পারেন, যেখানে এই প্যাটার্নটি উল্লিখিত ক্যারেক্টারগুলির বাইরে থাকা কিছু মেলাবে।

Custom Character Classes উদাহরণ:

  1. [a-z]:
    • এটি অক্ষরের ছোট হাতের (lowercase letters) মধ্যে যেকোনো একটি মেলে।
    • উদাহরণ: a থেকে z পর্যন্ত কোনো এক অক্ষর।
  2. [^0-9]:
    • এটি সংখ্যা নয় এমন যে কোনো ক্যারেক্টার মেলে। ^ চিহ্নটি negate বা উল্টানো কাজ করে, অর্থাৎ এটি 0 থেকে 9 পর্যন্ত কোন সংখ্যা ছাড়া সবকিছু মেলে।
  3. [a-zA-Z]:
    • এটি অক্ষরের ছোট এবং বড় হাতের (uppercase and lowercase letters) মধ্যে যেকোনো একটি মেলে।
  4. [0-9]:
    • এটি সংখ্যা (digits) 0 থেকে 9 পর্যন্ত যেকোনো একটি মেলে।
  5. [a-zA-Z0-9]:
    • এটি অক্ষর এবং সংখ্যা যেকোনো একটি মেলে।

Custom Character Classes তৈরির জন্য সাধারণ সিনট্যাক্স:

  • [ ]: ব্র্যাকেটের মধ্যে নির্দিষ্ট ক্যারেক্টার রেঞ্জ অথবা সিলেক্ট করা ক্যারেক্টার।
  • [^ ]: negation বা উল্টো চরিত্রের জন্য, যেগুলি বাদ দেওয়া হবে।

Java Regex: Custom Character Classes এর উদাহরণ কোড

এখানে কিছু Custom Character Classes এর উদাহরণ দেওয়া হলো, যা আপনি Java Regex তে ব্যবহার করতে পারেন।

1. Character Range Matching (e.g., [a-z], [A-Z])

import java.util.regex.*;

public class CustomCharacterClassExample {
    public static void main(String[] args) {
        // Pattern to match lowercase letters
        String pattern = "[a-z]"; // Matches any lowercase letter

        String text = "abcXYZ123";
        
        // Compile the pattern
        Pattern p = Pattern.compile(pattern);

        // Create a matcher to find the pattern in the text
        Matcher m = p.matcher(text);

        // Find matching characters
        while (m.find()) {
            System.out.println("Found lowercase letter: " + m.group());
        }
    }
}

আউটপুট:

Found lowercase letter: a
Found lowercase letter: b
Found lowercase letter: c

2. Matching Non-Digit Characters ([^0-9])

import java.util.regex.*;

public class CustomCharacterClassExample {
    public static void main(String[] args) {
        // Pattern to match any non-digit character
        String pattern = "[^0-9]"; // Matches any character that is NOT a digit

        String text = "abc123xyz";

        // Compile the pattern
        Pattern p = Pattern.compile(pattern);

        // Create a matcher to find the pattern in the text
        Matcher m = p.matcher(text);

        // Find matching characters
        while (m.find()) {
            System.out.println("Non-digit character: " + m.group());
        }
    }
}

আউটপুট:

Non-digit character: a
Non-digit character: b
Non-digit character: c
Non-digit character: x
Non-digit character: y
Non-digit character: z

3. Matching Alphanumeric Characters ([a-zA-Z0-9])

import java.util.regex.*;

public class CustomCharacterClassExample {
    public static void main(String[] args) {
        // Pattern to match any alphanumeric character
        String pattern = "[a-zA-Z0-9]"; // Matches any letter or digit

        String text = "abc123@xyz";

        // Compile the pattern
        Pattern p = Pattern.compile(pattern);

        // Create a matcher to find the pattern in the text
        Matcher m = p.matcher(text);

        // Find matching characters
        while (m.find()) {
            System.out.println("Alphanumeric character: " + m.group());
        }
    }
}

আউটপুট:

Alphanumeric character: a
Alphanumeric character: b
Alphanumeric character: c
Alphanumeric character: 1
Alphanumeric character: 2
Alphanumeric character: 3
Alphanumeric character: x
Alphanumeric character: y
Alphanumeric character: z

4. Matching Uppercase and Lowercase Letters ([a-zA-Z])

import java.util.regex.*;

public class CustomCharacterClassExample {
    public static void main(String[] args) {
        // Pattern to match any uppercase or lowercase letter
        String pattern = "[a-zA-Z]"; // Matches any letter

        String text = "abcDEF123";

        // Compile the pattern
        Pattern p = Pattern.compile(pattern);

        // Create a matcher to find the pattern in the text
        Matcher m = p.matcher(text);

        // Find matching characters
        while (m.find()) {
            System.out.println("Letter: " + m.group());
        }
    }
}

আউটপুট:

Letter: a
Letter: b
Letter: c
Letter: D
Letter: E
Letter: F

Custom Character Classes এর কিছু সাধারণ ব্যবহার:

  1. Character Ranges:
    • আপনি [a-z] এর মাধ্যমে lowercase অক্ষর, [A-Z] এর মাধ্যমে uppercase অক্ষর এবং [0-9] এর মাধ্যমে digits ম্যাচ করতে পারেন।
  2. Matching Specific Sets:
    • [aeiou] এর মাধ্যমে vowels (স্বরবর্ণ) এবং [^aeiou] এর মাধ্যমে consonants (ব্যঞ্জনবর্ণ) মেলাতে পারেন।
  3. Combining Multiple Ranges:
    • [a-zA-Z0-9] বা [a-fA-F0-9] এর মাধ্যমে অক্ষর এবং সংখ্যা একত্রে ম্যাচ করা যায়।
  4. Negation:
    • [^ ] ব্যবহার করে আপনি নির্দিষ্ট ক্যারেক্টার বাদ দিয়ে বাকী ক্যারেক্টারগুলোর সাথে মিল করতে পারেন। যেমন: [^0-9] এর মাধ্যমে শুধুমাত্র ডিজিট ছাড়া সব ক্যারেক্টার মেলে।

Java Regular Expressions (Regex) এর Custom Character Classes খুবই শক্তিশালী এবং এর মাধ্যমে আপনি টেক্সটের নির্দিষ্ট অংশ সুনির্দিষ্টভাবে খুঁজে পেতে পারেন। Character ranges যেমন [a-z], [^0-9], এবং [a-zA-Z0-9] ব্যবহার করে আপনি অনেক ধরনের টেক্সট ম্যানিপুলেশন সহজে করতে পারবেন। Java regex-এর সাথে Custom Character Classes ব্যবহার করে আপনি জটিল প্যাটার্ন ম্যানিপুলেশন, ভ্যালিডেশন এবং টেক্সট প্রসেসিং কাজে সাহায্য পেতে পারেন।

Content added By

Java Regular Expressions (Regex) একটি শক্তিশালী টুল যা টেক্সট ম্যানিপুলেশন এবং স্ট্রিং অনুসন্ধানে ব্যবহৃত হয়। Java Regex প্যাটার্নে POSIX Character Classes (যেমন \p{Lower}, \p{Upper}, \p{Digit}) ব্যবহার করে আপনি কিছু বিশেষ ধরনের ক্যারেক্টার সনাক্ত করতে পারেন।

POSIX Character Classes এর মাধ্যমে আপনি সহজে বিভিন্ন ধরনের ক্যারেক্টারের গ্রুপ চিহ্নিত করতে পারেন, যেমন অক্ষর, সংখ্যা, লোয়ারকেস, আপারকেস ইত্যাদি।

POSIX Character Classes এর ধরন এবং ব্যবহার:

  1. \p{Lower}:
    • অর্থ: এই প্যাটার্নটি lowercase letters (ছোট হাতের অক্ষর) চিহ্নিত করে। এটি এমন সমস্ত ক্যারেক্টার মেলে যেগুলি a থেকে z এর মধ্যে থাকে।
    • ব্যবহার: \p{Lower} দ্বারা আপনি ছোট হাতের অক্ষরগুলিকে টার্গেট করতে পারেন।
    • উদাহরণ:
      • প্যাটার্ন: \p{Lower}
      • এটি টেক্সটে ছোট হাতের অক্ষরগুলি খুঁজে বের করবে।
  2. \p{Upper}:
    • অর্থ: এই প্যাটার্নটি uppercase letters (বড় হাতের অক্ষর) চিহ্নিত করে। এটি এমন সমস্ত ক্যারেক্টার মেলে যেগুলি A থেকে Z এর মধ্যে থাকে।
    • ব্যবহার: \p{Upper} দ্বারা আপনি বড় হাতের অক্ষরগুলিকে টার্গেট করতে পারেন।
    • উদাহরণ:
      • প্যাটার্ন: \p{Upper}
      • এটি টেক্সটে বড় হাতের অক্ষরগুলি খুঁজে বের করবে।
  3. \p{Digit}:
    • অর্থ: এই প্যাটার্নটি digits (সংখ্যা) চিহ্নিত করে। এটি এমন সমস্ত ক্যারেক্টার মেলে যেগুলি 0 থেকে 9 এর মধ্যে থাকে।
    • ব্যবহার: \p{Digit} দ্বারা আপনি সংখ্যাগুলিকে টার্গেট করতে পারেন।
    • উদাহরণ:
      • প্যাটার্ন: \p{Digit}
      • এটি টেক্সটে সমস্ত সংখ্যা খুঁজে বের করবে।

Java Regex এ POSIX Character Classes এর ব্যবহার

Java তে POSIX Character Classes ব্যবহার করতে Pattern এবং Matcher ক্লাস ব্যবহার করা হয়। চলুন, প্রতিটি প্যাটার্নের ব্যবহার দেখুন:


1. \p{Lower} ব্যবহার:

import java.util.regex.*;

public class LowerCaseExample {
    public static void main(String[] args) {
        // Regex pattern to match lowercase letters
        String pattern = "\\p{Lower}";

        // String to search
        String text = "Hello world!";

        // Compile the pattern
        Pattern p = Pattern.compile(pattern);

        // Create a matcher
        Matcher m = p.matcher(text);

        // Find all lowercase letters
        while (m.find()) {
            System.out.println("Found lowercase letter: " + m.group());
        }
    }
}

আউটপুট:

Found lowercase letter: e
Found lowercase letter: l
Found lowercase letter: l
Found lowercase letter: o
Found lowercase letter: w
Found lowercase letter: o
Found lowercase letter: r
Found lowercase letter: l
Found lowercase letter: d

ব্যাখ্যা:

  • প্যাটার্ন \p{Lower} দিয়ে আমরা "hello world!" স্ট্রিংয়ের সব ছোট হাতের অক্ষর গুলি খুঁজে পেয়েছি এবং সেগুলি প্রিন্ট করেছি।

2. \p{Upper} ব্যবহার:

import java.util.regex.*;

public class UpperCaseExample {
    public static void main(String[] args) {
        // Regex pattern to match uppercase letters
        String pattern = "\\p{Upper}";

        // String to search
        String text = "Hello World!";

        // Compile the pattern
        Pattern p = Pattern.compile(pattern);

        // Create a matcher
        Matcher m = p.matcher(text);

        // Find all uppercase letters
        while (m.find()) {
            System.out.println("Found uppercase letter: " + m.group());
        }
    }
}

আউটপুট:

Found uppercase letter: H
Found uppercase letter: W

ব্যাখ্যা:

  • প্যাটার্ন \p{Upper} দ্বারা "Hello World!" স্ট্রিংয়ের বড় হাতের অক্ষরগুলি খুঁজে বের করা হয়েছে, যেমন "H" এবং "W"

3. \p{Digit} ব্যবহার:

import java.util.regex.*;

public class DigitExample {
    public static void main(String[] args) {
        // Regex pattern to match digits
        String pattern = "\\p{Digit}";

        // String to search
        String text = "My phone number is 12345.";

        // Compile the pattern
        Pattern p = Pattern.compile(pattern);

        // Create a matcher
        Matcher m = p.matcher(text);

        // Find all digits
        while (m.find()) {
            System.out.println("Found digit: " + m.group());
        }
    }
}

আউটপুট:

Found digit: 1
Found digit: 2
Found digit: 3
Found digit: 4
Found digit: 5

ব্যাখ্যা:

  • প্যাটার্ন \p{Digit} দ্বারা "My phone number is 12345." স্ট্রিংয়ের সব সংখ্যা গুলি খুঁজে বের করা হয়েছে এবং সেগুলি প্রিন্ট করা হয়েছে।

POSIX Character Classes এর অন্যান্য ধরনের প্যাটার্ন:

  1. \p{Alpha}: সমস্ত অক্ষর (ছোট বা বড় হাতের)।
  2. \p{Alnum}: সমস্ত অক্ষর বা ডিজিট।
  3. \p{Punct}: সমস্ত পাঙ্কচুয়েশন চিহ্ন (যেমন, ., ,, !, ?, ইত্যাদি)।
  4. \p{Space}: সমস্ত সাদা স্থান (space, tab, new line, carriage return)।
  5. \p{Graph}: গ্রাফিক্যাল ক্যারেক্টার যা দেখতে পাওয়া যায় (অক্ষর, ডিজিট, বা পাঙ্কচুয়েশন)।

POSIX Character Classes (যেমন \p{Lower}, \p{Upper}, \p{Digit}) Java Regular Expressions এ একটি শক্তিশালী ফিচার যা আপনাকে সহজে বিভিন্ন ধরনের ক্যারেক্টারের গ্রুপ চিহ্নিত করতে সাহায্য করে। এগুলি বিশেষ করে text validation, data extraction, এবং pattern matching এর জন্য উপযোগী। Java তে এগুলোর ব্যবহার স্ট্রিং ম্যানিপুলেশন এবং টেক্সট অনুসন্ধানকে আরও সহজ এবং শক্তিশালী করে তোলে।

Content added By

Java Regular Expressions (Regex) শক্তিশালী টেক্সট ম্যানিপুলেশন এবং প্যাটার্ন ম্যাচিং টুল হিসেবে ব্যবহৃত হয়। POSIX character classes এবং Unicode/Named character classes হল এমন কিছু ফিচার যা আপনাকে বিশেষ ধরনের ক্যারেক্টারগুলির সাথে কাজ করার জন্য আরও নমনীয় এবং উন্নত পদ্ধতি প্রদান করে।

এই ফিচারগুলির সাহায্যে আপনি স্ট্রিংয়ে বিশেষ ক্যারেক্টার শনাক্ত, খুঁজে বের বা প্রক্রিয়া করতে পারেন, যা বিভিন্ন ভাষার বা সিস্টেমের জন্য প্রয়োজনীয় হতে পারে।


1. POSIX Character Classes:

POSIX character classes Java Regular Expressions এ কিছু নির্দিষ্ট ক্যারেক্টারের শ্রেণী (class) তৈরি করতে ব্যবহৃত হয়, যা Unicode এবং অন্যান্য বিশেষ ধরনের ক্যারেক্টারগুলির জন্য সুবিধাজনক।

Java তে POSIX character classes কে \p{} সিনট্যাক্সের মাধ্যমে ব্যবহার করা হয়।

POSIX Character Classes:

  • \p{Lower}: ছোট হাতের অক্ষর (lowercase letters)
  • \p{Upper}: বড় হাতের অক্ষর (uppercase letters)
  • \p{Digit}: ডিজিট বা সংখ্যা (digits)
  • \p{Alpha}: অক্ষর (letters)
  • \p{Alnum}: অক্ষর অথবা সংখ্যা (alphanumeric)
  • \p{Space}: স্পেস বা হোয়াইটস্পেস (whitespace characters)

ব্যবহার উদাহরণ:

  1. \p{Lower}: ছোট হাতের অক্ষর
    • ব্যবহার: এটি সমস্ত ছোট হাতের অক্ষর (a-z) মেলে।
import java.util.regex.*;

public class POSIXLowerExample {
    public static void main(String[] args) {
        String pattern = "\\p{Lower}";  // Matching lowercase characters
        String text = "abc DEF 123";
        
        Pattern p = Pattern.compile(pattern);
        Matcher m = p.matcher(text);
        
        while (m.find()) {
            System.out.println("Found lowercase letter: " + m.group());
        }
    }
}

আউটপুট:

Found lowercase letter: a
Found lowercase letter: b
Found lowercase letter: c
  1. \p{Upper}: বড় হাতের অক্ষর
    • ব্যবহার: এটি সমস্ত বড় হাতের অক্ষর (A-Z) মেলে।
import java.util.regex.*;

public class POSIXUpperExample {
    public static void main(String[] args) {
        String pattern = "\\p{Upper}";  // Matching uppercase characters
        String text = "abc DEF 123";
        
        Pattern p = Pattern.compile(pattern);
        Matcher m = p.matcher(text);
        
        while (m.find()) {
            System.out.println("Found uppercase letter: " + m.group());
        }
    }
}

আউটপুট:

Found uppercase letter: D
Found uppercase letter: E
Found uppercase letter: F
  1. \p{Digit}: সংখ্যা (digits)
    • ব্যবহার: এটি সমস্ত ডিজিট (0-9) মেলে।
import java.util.regex.*;

public class POSIXDigitExample {
    public static void main(String[] args) {
        String pattern = "\\p{Digit}";  // Matching digits
        String text = "abc 123 DEF";
        
        Pattern p = Pattern.compile(pattern);
        Matcher m = p.matcher(text);
        
        while (m.find()) {
            System.out.println("Found digit: " + m.group());
        }
    }
}

আউটপুট:

Found digit: 1
Found digit: 2
Found digit: 3

2. Unicode Character Classes:

Java Regular Expressions এ Unicode এবং Named character classes ব্যবহার করা যায় যা বৈশ্বিক এবং বিশেষ ভাষার ক্যারেক্টারকে আরও সহজে মেলানোর জন্য উপকারী।

Unicode শ্রেণীগুলি \p{} ব্যবহার করে নির্দেশ করা হয়। প্রতিটি \p{} ইউনিকোডের নির্দিষ্ট ক্যারেক্টারের গোষ্ঠী (category) নির্দেশ করে।

Unicode Character Classes:

  • \p{L}: সমস্ত অক্ষর (letters) (Unicode Letter)
  • \p{Lu}: সমস্ত বড় হাতের অক্ষর (uppercase letters)
  • \p{Ll}: সমস্ত ছোট হাতের অক্ষর (lowercase letters)
  • \p{N}: সমস্ত সংখ্যা (digits) (Unicode digit)
  • \p{Z}: স্পেস (whitespace characters)
  • \p{P}: পাঙ্কচুয়েশন (punctuation characters)
  • \p{M}: মডিফাইং ক্যারেক্টার (mark characters)

ব্যবহার উদাহরণ:

  1. \p{L}: সমস্ত অক্ষর (letters)
    • ব্যবহার: এটি সমস্ত অক্ষরকে (Unicode Letter) মেলে।
import java.util.regex.*;

public class UnicodeLetterExample {
    public static void main(String[] args) {
        String pattern = "\\p{L}";  // Matching any letter (Unicode letter)
        String text = "abc DEF 123";
        
        Pattern p = Pattern.compile(pattern);
        Matcher m = p.matcher(text);
        
        while (m.find()) {
            System.out.println("Found letter: " + m.group());
        }
    }
}

আউটপুট:

Found letter: a
Found letter: b
Found letter: c
Found letter: D
Found letter: E
Found letter: F
  1. \p{N}: সমস্ত সংখ্যা (digits)
    • ব্যবহার: এটি সমস্ত সংখ্যা (Unicode digit) মেলে।
import java.util.regex.*;

public class UnicodeDigitExample {
    public static void main(String[] args) {
        String pattern = "\\p{N}";  // Matching any digit (Unicode digit)
        String text = "abc 123 DEF";
        
        Pattern p = Pattern.compile(pattern);
        Matcher m = p.matcher(text);
        
        while (m.find()) {
            System.out.println("Found digit: " + m.group());
        }
    }
}

আউটপুট:

Found digit: 1
Found digit: 2
Found digit: 3
  1. \p{Z}: স্পেস (whitespace characters)
    • ব্যবহার: এটি সমস্ত স্পেস (whitespace) ক্যারেক্টারকে মেলে।
import java.util.regex.*;

public class UnicodeSpaceExample {
    public static void main(String[] args) {
        String pattern = "\\p{Z}";  // Matching whitespace characters
        String text = "hello world";
        
        Pattern p = Pattern.compile(pattern);
        Matcher m = p.matcher(text);
        
        while (m.find()) {
            System.out.println("Found space: " + m.group());
        }
    }
}

আউটপুট:

Found space:  

  • POSIX character classes এবং Unicode character classes Java Regex-এ গুরুত্বপূর্ণ ভূমিকা পালন করে, কারণ এগুলি আপনাকে টেক্সট ম্যানিপুলেশন, অনুসন্ধান এবং ভ্যালিডেশন আরও সহজ এবং দক্ষভাবে করতে সাহায্য করে।
  • POSIX শ্রেণীগুলি ব্যবহার করে আপনি সহজেই ছোট হাতের অক্ষর, বড় হাতের অক্ষর, সংখ্যা, স্পেস ইত্যাদি খুঁজে পেতে পারেন।
  • Unicode character classes বিভিন্ন ভাষার এবং বিশেষ ধরনের ক্যারেক্টার (যেমন অক্ষর, সংখ্যা, স্পেস) সনাক্ত করতে সহায়ক এবং বিশ্বব্যাপী অ্যাপ্লিকেশনগুলোতে খুবই গুরুত্বপূর্ণ।
  • \p{} সিনট্যাক্সের মাধ্যমে আপনি Unicode এবং POSIX শ্রেণীগুলোর সাথে কাজ করতে পারবেন, যা Java Regex ব্যবহারকে আরও শক্তিশালী এবং নমনীয় করে তোলে।
Content added By

Character Classes হল Regular Expressions (Regex) এর অংশ, যা নির্দিষ্ট চরিত্র বা চরিত্রের গ্রুপ চিহ্নিত করতে ব্যবহৃত হয়। Java-তে java.util.regex প্যাকেজের মাধ্যমে আপনি এই রেগুলার এক্সপ্রেশন এবং Character Classes ব্যবহার করে টেক্সট ম্যানিপুলেট এবং মাচিং করতে পারেন।

Character Classes দিয়ে আপনি সাধারণত:

  • ডিজিট (digits)
  • অক্ষর (letters)
  • স্পেস (whitespaces)
  • পংক্তির শুরু বা শেষ (start or end of line) ইত্যাদি চিহ্নিত করতে পারেন।

Java Character Classes

কিছু সাধারণ Character Classes:

  • \\d: যেকোনো ডিজিট (0-9)
  • \\D: যেকোনো ডিজিট নয়
  • \\w: যেকোনো শব্দ অক্ষর (অক্ষর, ডিজিট, আন্ডারস্কোর)
  • \\W: যেকোনো শব্দ অক্ষর নয়
  • \\s: স্পেস বা হোয়াইটস্পেস (স্পেস, ট্যাব, নতুন লাইনের মতো)
  • \\S: স্পেস নয়
  • \\b: শব্দ সীমানা (word boundary)

Practical Example of Character Classes in Java:

এখানে আমরা Character Classes ব্যবহার করে বিভিন্ন টাস্ক যেমন ডিজিট চেক করা, শব্দ তৈরি করা, স্পেস চেক করা ইত্যাদি দেখব।

Example 1: Match a Digit Using \\d

এই উদাহরণে আমরা চেক করব যে কোনো স্ট্রিংয়ের মধ্যে একটি ডিজিট উপস্থিত আছে কিনা।

import java.util.regex.*;

public class CharacterClassExample {
    public static void main(String[] args) {
        String input = "The number is 1234";

        // Regex to match any digit
        String regex = "\\d";

        // Create a pattern and matcher
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);

        // Check if there's a digit in the input string
        while (matcher.find()) {
            System.out.println("Found a digit: " + matcher.group());
        }
    }
}

আউটপুট:

Found a digit: 1
Found a digit: 2
Found a digit: 3
Found a digit: 4

কোড বিশ্লেষণ:

  • \\d ব্যবহার করে, আমরা ইনপুট স্ট্রিংয়ের মধ্যে থাকা ডিজিটগুলো চেক করেছি।
  • matcher.find() প্রতিটি ডিজিটকে মেচ করে এবং সেগুলি প্রিন্ট করে।

Example 2: Match Non-Digits Using \\D

এখানে আমরা এমন সব ক্যারেক্টার মাচ করব যেগুলো ডিজিট নয়।

import java.util.regex.*;

public class NonDigitExample {
    public static void main(String[] args) {
        String input = "The number is 1234";

        // Regex to match any non-digit character
        String regex = "\\D";

        // Create a pattern and matcher
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);

        // Check if there are non-digit characters in the input string
        while (matcher.find()) {
            System.out.println("Found non-digit: " + matcher.group());
        }
    }
}

আউটপুট:

Found non-digit: T
Found non-digit: h
Found non-digit: e
Found non-digit:  
Found non-digit: n
Found non-digit: u
Found non-digit: m
Found non-digit: b
Found non-digit: e
Found non-digit: r
Found non-digit:  
Found non-digit: i
Found non-digit: s
Found non-digit:  

কোড বিশ্লেষণ:

  • \\D রেগুলার এক্সপ্রেশনটি ডিজিট ছাড়া সব কিছু মাচ করে।
  • এখানে "1234" এর বাইরে থাকা সব অক্ষরগুলির জন্য মাচিং হয়েছে।

Example 3: Match Word Characters Using \\w

এখানে আমরা এমন সব অক্ষর মাচ করব যেগুলি word characters (অক্ষর, ডিজিট, আন্ডারস্কোর)।

import java.util.regex.*;

public class WordCharacterExample {
    public static void main(String[] args) {
        String input = "Hello_123 World!";

        // Regex to match word characters
        String regex = "\\w";

        // Create a pattern and matcher
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);

        // Check if there are word characters in the input string
        while (matcher.find()) {
            System.out.println("Found word character: " + matcher.group());
        }
    }
}

আউটপুট:

Found word character: H
Found word character: e
Found word character: l
Found word character: l
Found word character: o
Found word character: _
Found word character: 1
Found word character: 2
Found word character: 3
Found word character: W
Found word character: o
Found word character: r
Found word character: l
Found word character: d

কোড বিশ্লেষণ:

  • \\w রেগুলার এক্সপ্রেশনটি স্ট্রিংয়ের মধ্যে থাকা সব word characters (অক্ষর, ডিজিট, আন্ডারস্কোর) মাচ করেছে।

Example 4: Match Whitespace Using \\s

এখানে আমরা এমন সব স্পেস বা হোয়াইটস্পেস চেক করব, যেমন স্পেস, ট্যাব, অথবা নতুন লাইন।

import java.util.regex.*;

public class WhitespaceExample {
    public static void main(String[] args) {
        String input = "Hello  world \tnew line";

        // Regex to match whitespace characters
        String regex = "\\s";

        // Create a pattern and matcher
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);

        // Check if there are whitespace characters in the input string
        while (matcher.find()) {
            System.out.println("Found whitespace character: " + matcher.group());
        }
    }
}

আউটপুট:

Found whitespace character:  
Found whitespace character:  
Found whitespace character: 	

কোড বিশ্লেষণ:

  • \\s রেগুলার এক্সপ্রেশনটি ইনপুট স্ট্রিংয়ের মধ্যে থাকা সব ধরনের স্পেস বা হোয়াইটস্পেস মাচ করেছে। যেমন, " " (স্পেস) এবং \t (ট্যাব)।

Example 5: Match Non-Word Characters Using \\W

এখানে আমরা এমন সব ক্যারেক্টার মাচ করব যেগুলি word characters নয় (অর্থাৎ স্পেস, পাঙ্কচুয়েশন, অথবা অন্য কোনো বিশেষ চিহ্ন)।

import java.util.regex.*;

public class NonWordCharacterExample {
    public static void main(String[] args) {
        String input = "Hello, World!";

        // Regex to match non-word characters
        String regex = "\\W";

        // Create a pattern and matcher
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);

        // Check if there are non-word characters in the input string
        while (matcher.find()) {
            System.out.println("Found non-word character: " + matcher.group());
        }
    }
}

আউটপুট:

Found non-word character: ,
Found non-word character:  
Found non-word character: !

কোড বিশ্লেষণ:

  • \\W রেগুলার এক্সপ্রেশনটি ইনপুট স্ট্রিংয়ের মধ্যে থাকা সব non-word characters (যেমন, কমা এবং উদ্ধৃতি চিহ্ন) মাচ করেছে।

  • Character Classes (যেমন \\d, \\D, \\w, \\W, \\s, \\S) Java Regular Expressions এ স্ট্রিংয়ের মধ্যে নির্দিষ্ট ধরনের চরিত্র মাচ করার জন্য ব্যবহৃত হয়।
  • Practical Examples এর মাধ্যমে আমরা শিখলাম কিভাবে ডিজিট, শব্দ অক্ষর, হোয়াইটস্পেস এবং non-word characters মাচ করা যায়।
  • Java java.util.regex প্যাকেজে Pattern এবং Matcher ক্লাস ব্যবহার করে আপনি এই রেগুলার এক্সপ্রেশনগুলির মাধ্যমে স্ট্রিং প্রক্রিয়াগুলিকে আরও শক্তিশালী ও কার্যকরীভাবে পরিচালনা করতে পারেন।
Content added By
Promotion

Are you sure to start over?

Loading...