Possessive Quantifiers এর ব্যবহার: *+, ++, {n}+, {n,m}+

Greedy, Reluctant, এবং Possessive Quantifiers - জাভা রেজেক্স (Java Regex) - Java Technologies

268

Java Reflection Package মূলত ক্লাস, মেথড, ফিল্ড এবং কনস্ট্রাক্টরের তথ্যের উপর রিফ্লেকশন অপারেশন সম্পাদন করতে ব্যবহৃত হয়। তবে, আপনি যে বিষয়টি উল্লেখ করেছেন, তা Java Regular Expressions (Regex) এর অংশ। Possessive Quantifiers Regex-এর মধ্যে একটি গুরুত্বপূর্ণ কনসেপ্ট এবং এটি বিশেষভাবে স্ট্রিংয়ের কিছু নির্দিষ্ট সংখ্যক উপস্থিতি বা ম্যাচিং নির্ধারণ করতে ব্যবহৃত হয়।

এই পোস্টে Possessive Quantifiers যেমন *+, ++, {n}+, এবং {n,m}+ এর ব্যবহার আলোচনা করা হবে, যা রেগুলার এক্সপ্রেশন প্যাটার্নের মধ্যে ব্যবহৃত হয়। এগুলোর মাধ্যমে আপনি একটি প্যাটার্নের শর্তাবলী আরও নির্দিষ্টভাবে কাস্টমাইজ করতে পারেন।

1. *+ (Possessive Star Quantifier):

  • *+ হল possessive quantifier, যা * এর মতো কাজ করে (যে কোন সংখ্যা, 0 বা তার বেশি), তবে এই quantifier ব্যবহার করলে এটি backtracking বন্ধ করে দেয়। অর্থাৎ, একবার এটি মিলানো শুরু করলে এটি আর ফিরে যাবে না।

Syntax:

x*+
  • এখানে x এর 0 বা তার বেশি উপস্থিতি মেলা হবে, কিন্তু backtracking হবে না।

Example:

import java.util.regex.*;

public class PossessiveStarExample {
    public static void main(String[] args) {
        String regex = "a*+b"; // Possessive star quantifier
        String text = "aaab";
        
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(text);
        
        // Testing for match
        boolean isMatch = matcher.matches();
        System.out.println("Does it match? " + isMatch); // true
    }
}

Output:

Does it match? true

ব্যাখ্যা:

  • এখানে a*+ প্যাটার্নটি a এর 0 বা তার বেশি উপস্থিতি মেলায়, তবে possessive nature এর কারণে এটি একটি বারেই মেলাতে থাকে এবং ফিরে যায় না, যতক্ষণ না এটি পুরো স্ট্রিং মেলে।

2. ++ (Possessive Plus Quantifier):

  • ++ হল possessive quantifier যা + এর মতো কাজ করে (অর্থাৎ, একটি বা তার বেশি), তবে এটি backtracking বন্ধ করে দেয়। একবার এটি মিলানো শুরু করলে এটি আর ফিরে যাবে না।

Syntax:

x++ 
  • এখানে x এর এক বা তার বেশি উপস্থিতি মেলা হবে, কিন্তু backtracking হবে না।

Example:

import java.util.regex.*;

public class PossessivePlusExample {
    public static void main(String[] args) {
        String regex = "a++b"; // Possessive plus quantifier
        String text = "aaab";
        
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(text);
        
        // Testing for match
        boolean isMatch = matcher.matches();
        System.out.println("Does it match? " + isMatch); // true
    }
}

Output:

Does it match? true

ব্যাখ্যা:

  • a++ প্যাটার্নটি a এর এক বা তার বেশি উপস্থিতি মেলায়, তবে possessive nature এর কারণে এটি একবারে ম্যাচ করে, ফিরিয়ে যায় না।

3. {n}+ (Possessive Quantifier with Fixed Number):

  • {n}+ হল possessive quantifier যা {n} (exactly n occurrences) এর মতো কাজ করে, তবে এটি backtracking বন্ধ করে দেয়। একবার এটি n সংখ্যক উপস্থিতি মিলালে, এটি আর পিছনে ফিরে যাবে না।

Syntax:

x{n}+
  • এখানে x এর ঠিক n বার উপস্থিতি মেলা হবে, তবে backtracking হবে না।

Example:

import java.util.regex.*;

public class PossessiveNExample {
    public static void main(String[] args) {
        String regex = "a{3}+"; // Possessive quantifier with exactly 3 occurrences
        String text = "aaa";
        
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(text);
        
        // Testing for match
        boolean isMatch = matcher.matches();
        System.out.println("Does it match? " + isMatch); // true
    }
}

Output:

Does it match? true

ব্যাখ্যা:

  • a{3}+ প্যাটার্নটি ঠিক 3টি a খুঁজে এবং একবারে মেলে, তবে এটি possessive nature এর কারণে আর backtrack করবে না।

4. {n,m}+ (Possessive Quantifier with Range):

  • {n,m}+ হল possessive quantifier যা {n,m} (between n and m occurrences) এর মতো কাজ করে, তবে এটি backtracking বন্ধ করে দেয়। একবার এটি n থেকে m সংখ্যক উপস্থিতি মিলালে, এটি আর ফিরে যাবে না।

Syntax:

x{n,m}+
  • এখানে x এর n থেকে m বার উপস্থিতি মেলা হবে, তবে backtracking হবে না।

Example:

import java.util.regex.*;

public class PossessiveRangeExample {
    public static void main(String[] args) {
        String regex = "a{2,4}+"; // Possessive quantifier with range 2 to 4 occurrences
        String text = "aaab";
        
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(text);
        
        // Testing for match
        boolean isMatch = matcher.matches();
        System.out.println("Does it match? " + isMatch); // true
    }
}

Output:

Does it match? true

ব্যাখ্যা:

  • a{2,4}+ প্যাটার্নটি a এর 2 থেকে 4 বার উপস্থিতি খুঁজে, তবে possessive nature এর কারণে একবারেই মিলানো হয় এবং আর পিছনে ফিরে যাবে না।

  • Possessive Quantifiers (*+, ++, {n}+, {n,m}+) হল এমন রেগুলার এক্সপ্রেশন quantifiers যা backtracking বন্ধ করে দেয় এবং এটি দ্রুত ম্যাচিং সুনিশ্চিত করে।
  • এগুলি সাধারণ *, +, এবং {n,m} এর মতোই কাজ করে, তবে এই quantifiers ব্যবহার করলে এটি backtracking বন্ধ করে দেয়, যা অধিকাংশ ক্ষেত্রে স্ট্রিং ম্যাচিং দ্রুত সম্পন্ন করে।

এগুলি ব্যবহার করে আপনি আপনার রেগুলার এক্সপ্রেশন প্যাটার্নগুলো আরও দ্রুত এবং দক্ষভাবে তৈরি করতে পারেন, যেখানে backtracking এর প্রয়োজন হয় না।

Content added By
Promotion

Are you sure to start over?

Loading...