Pattern.compile() এবং তার ব্যবহারের কৌশল

Pattern ক্লাসের মেথডসমূহ - জাভা রেজেক্স (Java Regex) - Java Technologies

311

Pattern.compile() মেথডটি java.util.regex.Pattern ক্লাসের একটি স্ট্যাটিক মেথড, যা একটি রেগুলার এক্সপ্রেশন প্যাটার্ন কম্পাইল করে একটি Pattern অবজেক্ট তৈরি করে। এই Pattern অবজেক্টের মাধ্যমে আপনি পরবর্তী সময়ে Matcher ক্লাসের সাহায্যে স্ট্রিং ম্যানিপুলেশন বা প্যাটার্ন ম্যাচিং করতে পারেন।

এখানে Pattern.compile() মেথড এবং তার ব্যবহারের কিছু কৌশল দেওয়া হচ্ছে।


Pattern.compile() মেথডের ব্যবহারের কৌশল:

  1. বেসিক Syntax:

    Pattern pattern = Pattern.compile(String regex);
    

    যেখানে:

    • regex: এটি রেগুলার এক্সপ্রেশন প্যাটার্ন হিসাবে একটি স্ট্রিং।
    • pattern: এটি একটি Pattern অবজেক্ট যা পরবর্তীতে Matcher অবজেক্টের মাধ্যমে ব্যবহার করা যাবে।
  2. Pattern.compile() এর বিভিন্ন ভেরিয়েন্ট:
    • Pattern.compile(String regex): সাধারণ প্যাটার্ন কম্পাইল করার জন্য।
    • Pattern.compile(String regex, int flags): এখানে আপনি রেগুলার এক্সপ্রেশন প্যাটার্নের সাথে একাধিক ফ্ল্যাগ (যেমন CASE_INSENSITIVE, MULTILINE, DOTALL ইত্যাদি) ব্যবহার করতে পারেন।

Pattern.compile() এর ব্যবহার:

1. Basic Example:

import java.util.regex.*;

public class PatternCompileExample {
    public static void main(String[] args) {
        String regex = "apple"; // প্যাটার্ন হিসাবে "apple"
        String text = "I have an apple."; // টেক্সট স্ট্রিং
        
        // Pattern তৈরি করা
        Pattern pattern = Pattern.compile(regex);
        
        // Matcher তৈরি করা
        Matcher matcher = pattern.matcher(text);
        
        // স্ট্রিংয়ের সাথে প্যাটার্ন মেলা পরীক্ষা করা
        boolean isMatch = matcher.find();
        System.out.println("Pattern found: " + isMatch);  // true
    }
}

ব্যাখ্যা:

  • এখানে "apple" প্যাটার্নটি খোঁজা হচ্ছে স্ট্রিং "I have an apple."-এ।
  • matcher.find() মেথডটি খুঁজবে এবং মেলানো হলে true রিটার্ন করবে।

আউটপুট:

Pattern found: true

2. Using Flags with Pattern.compile()

Flags ব্যবহার করে আপনি প্যাটার্নের আচরণ কাস্টমাইজ করতে পারেন। যেমন CASE_INSENSITIVE, DOTALL, MULTILINE ইত্যাদি ফ্ল্যাগস প্যাটার্নের আচরণ পরিবর্তন করতে ব্যবহৃত হয়।

import java.util.regex.*;

public class PatternCompileWithFlagsExample {
    public static void main(String[] args) {
        String regex = "apple"; // প্যাটার্ন হিসাবে "apple"
        String text = "I have an APPLE."; // টেক্সট স্ট্রিং
        
        // Pattern তৈরি করা, CASE_INSENSITIVE ফ্ল্যাগ ব্যবহার করা
        Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
        
        // Matcher তৈরি করা
        Matcher matcher = pattern.matcher(text);
        
        // স্ট্রিংয়ের সাথে প্যাটার্ন মেলা পরীক্ষা করা
        boolean isMatch = matcher.find();
        System.out.println("Pattern found: " + isMatch);  // true
    }
}

ব্যাখ্যা:

  • এখানে Pattern.CASE_INSENSITIVE ফ্ল্যাগ ব্যবহার করা হয়েছে, যার ফলে প্যাটার্ন "apple" এবং "APPLE" এর মধ্যে কোনো পার্থক্য করবে না।
  • আউটপুট হবে true, কারণ প্যাটার্ন "APPLE" স্ট্রিংয়ে রয়েছে এবং ফ্ল্যাগের কারণে এটি মেলা হয়।

আউটপুট:

Pattern found: true

3. Matching Start and End with Anchors (^ and $)

Start (^) এবং End ($) অঙ্কর ব্যবহার করে আপনি স্ট্রিংয়ের শুরু এবং শেষে প্যাটার্ন মেলাতে পারেন।

import java.util.regex.*;

public class PatternAnchorsExample {
    public static void main(String[] args) {
        String regex = "^apple"; // প্যাটার্ন "apple" দিয়ে স্ট্রিং শুরু হবে
        String text = "apple pie"; // টেক্সট স্ট্রিং
        
        // Pattern তৈরি করা
        Pattern pattern = Pattern.compile(regex);
        
        // Matcher তৈরি করা
        Matcher matcher = pattern.matcher(text);
        
        // স্ট্রিংয়ের শুরুতে প্যাটার্ন মেলা পরীক্ষা করা
        boolean isMatch = matcher.find();
        System.out.println("Pattern found at the start: " + isMatch);  // true
    }
}

ব্যাখ্যা:

  • এখানে "^apple" প্যাটার্নটি চেক করবে যে স্ট্রিংটি "apple" দিয়ে শুরু হচ্ছে কিনা।
  • matcher.find() মেথডটি স্ট্রিংয়ের শুরুতে মেলা খুঁজবে এবং মেলালে true রিটার্ন করবে।

আউটপুট:

Pattern found at the start: true

4. Extracting Groups with Parentheses

Grouping একটি রেগুলার এক্সপ্রেশন প্যাটার্নে () ব্যবহার করে আপনি বিভিন্ন অংশকে গ্রুপ করতে পারেন এবং পরে গ্রুপগুলোর মান আলাদা করে বের করতে পারেন।

import java.util.regex.*;

public class PatternGroupingExample {
    public static void main(String[] args) {
        String regex = "(\\d+)-(\\d+)-(\\d+)"; // প্যাটার্ন: YYYY-MM-DD
        String text = "2023-05-15"; // টেক্সট স্ট্রিং
        
        // Pattern তৈরি করা
        Pattern pattern = Pattern.compile(regex);
        
        // Matcher তৈরি করা
        Matcher matcher = pattern.matcher(text);
        
        // গ্রুপ বের করা
        if (matcher.find()) {
            System.out.println("Year: " + matcher.group(1));   // 2023
            System.out.println("Month: " + matcher.group(2));  // 05
            System.out.println("Day: " + matcher.group(3));    // 15
        }
    }
}

ব্যাখ্যা:

  • এখানে, (\\d+)-(\\d+)-(\\d+) প্যাটার্নটি তিনটি গ্রুপ তৈরি করছে (বছর, মাস, দিন)। গ্রুপিং এর মাধ্যমে এই তিনটি অংশ আলাদা করা হয়েছে।
  • matcher.group(1), matcher.group(2), এবং matcher.group(3) দিয়ে প্রতিটি গ্রুপের মান আলাদাভাবে পাওয়া যাচ্ছে।

আউটপুট:

Year: 2023
Month: 05
Day: 15

5. Replacing Text with replaceAll()

replaceAll() মেথডটি স্ট্রিংয়ের সমস্ত মিল খুঁজে বের করে এবং সেই অংশগুলোকে রিপ্লেস করে দেয়।

import java.util.regex.*;

public class PatternReplaceExample {
    public static void main(String[] args) {
        String regex = "apple"; // প্যাটার্ন হিসাবে "apple"
        String text = "apple orange apple banana";
        
        // Pattern তৈরি করা
        Pattern pattern = Pattern.compile(regex);
        
        // Matcher তৈরি করা
        Matcher matcher = pattern.matcher(text);
        
        // সবগুলো "apple" রিপ্লেস করা
        String result = matcher.replaceAll("fruit");
        System.out.println("Updated text: " + result);  // fruit orange fruit banana
    }
}

ব্যাখ্যা:

  • এখানে replaceAll() মেথডটি সব "apple" সাবস্ট্রিংকে "fruit"-এ রিপ্লেস করে।
  • আউটপুট হবে fruit orange fruit banana

Pattern.compile() মেথডটি Java Regular Expressions এর মূল উপাদান, যা একটি রেগুলার এক্সপ্রেশন স্ট্রিংকে Pattern অবজেক্টে রূপান্তরিত করে। এর মাধ্যমে আপনি স্ট্রিংয়ের বিভিন্ন অংশের সাথে matching, finding, replacing এবং grouping করতে পারেন।

  • Pattern.compile() এবং Matcher এর মাধ্যমে স্ট্রিং ম্যানিপুলেশন করা হয়, যেমন find(), matches(), replaceAll(), group() ইত্যাদি মেথডের সাহায্যে।
  • Anchors (যেমন ^ এবং $), Alternation (|), এবং Grouping (()) প্যাটার্নের মধ্যে ব্যবহার করা হয় স্ট্রিংয়ের নির্দিষ্ট অংশ চিহ্নিত করতে এবং Reflection এর মাধ্যমে ডাইনামিকভাবে প্যাটার্ন প্রসেস করা সম্ভব হয়।

Java-তে Regex এবং Reflection একত্রে ব্যবহার করে আরো শক্তিশালী কোড তৈরি করা যায় যা ডাইনামিকভাবে কোডের কার্যকারিতা পরিবর্তন করতে সাহায্য করে।

Content added By
Promotion

Are you sure to start over?

Loading...