Pattern.compile() এবং Matcher মেথডের ব্যবহার

Java তে Regex ব্যবহার - জাভা রেজেক্স (Java Regex) - Java Technologies

303

Regex (Regular Expression) জাভাতে একটি শক্তিশালী টুল, যা স্ট্রিং ম্যানিপুলেশন এবং প্যাটার্ন ম্যাচিংয়ের জন্য ব্যবহৃত হয়। Java Regular Expressions প্যাকেজে Pattern এবং Matcher ক্লাসের মাধ্যমে আমরা সহজে এবং কার্যকরভাবে স্ট্রিং নিয়ে কাজ করতে পারি।

Pattern.compile() মেথড:

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

সিনট্যাক্স:

Pattern pattern = Pattern.compile(String regex);

এখানে:

  • regex: এটি রেগুলার এক্সপ্রেশন প্যাটার্ন হিসেবে একটি স্ট্রিং।
  • pattern: এটি Pattern অবজেক্ট যা পরবর্তীতে Matcher অবজেক্টের মাধ্যমে ব্যবহার করা যাবে।

compile() মেথডের দুটি ভিন্ন ভেরিয়েন্ট রয়েছে:

  1. Pattern.compile(String regex): একটি সাধারণ রেগুলার এক্সপ্রেশন প্যাটার্ন কম্পাইল করতে ব্যবহৃত হয়।
  2. Pattern.compile(String regex, int flags): এটি রেগুলার এক্সপ্রেশন প্যাটার্ন এবং ফ্ল্যাগস (যেমন CASE_INSENSITIVE, MULTILINE ইত্যাদি) গ্রহণ করে।

Matcher মেথড:

Matcher ক্লাসটি একটি স্ট্রিং এর সাথে Pattern মেলানোর জন্য ব্যবহৃত হয়। এটি বিভিন্ন মেথড প্রদান করে যা স্ট্রিং এর সাথে রেগুলার এক্সপ্রেশন মেলাতে সাহায্য করে।

Matcher ক্লাসের কিছু গুরুত্বপূর্ণ মেথড:

  1. matches():

    • এটি স্ট্রিং এর পুরোটা রেগুলার এক্সপ্রেশন এর সাথে মেলে কিনা তা চেক করে।

    সিনট্যাক্স:

    boolean matches = matcher.matches();
    

    ব্যবহার:

    Pattern pattern = Pattern.compile("abc");
    Matcher matcher = pattern.matcher("abc");
    boolean isMatch = matcher.matches();  // returns true
    
  2. find():

    • এটি স্ট্রিং এর মধ্যে রেগুলার এক্সপ্রেশন প্যাটার্নটি খুঁজে বের করে। এটি এক বা একাধিক ম্যাচিং সাবস্ট্রিং খুঁজে বের করার জন্য ব্যবহার করা হয়।

    সিনট্যাক্স:

    boolean find = matcher.find();
    
  3. group():

    • এটি স্ট্রিং এর মধ্যে প্রথম ম্যাচ করা সাবস্ট্রিং রিটার্ন করে।

    সিনট্যাক্স:

    String matchedGroup = matcher.group();
    
  4. replaceAll():

    • এটি স্ট্রিং এর সবগুলো ম্যাচিং সাবস্ট্রিং রিপ্লেস করে।

    সিনট্যাক্স:

    String result = matcher.replaceAll(String replacement);
    
  5. start() এবং end():

    • start() মেথডটি ম্যাচিং সাবস্ট্রিং এর শুরু পজিশন এবং end() মেথডটি শেষ পজিশন রিটার্ন করে।

    সিনট্যাক্স:

    int start = matcher.start();
    int end = matcher.end();
    

উদাহরণ: Pattern.compile() এবং Matcher মেথডের ব্যবহার

এখন, আসুন কিছু উদাহরণ দেখি যেখানে আমরা Pattern.compile() এবং Matcher মেথড ব্যবহার করব।

উদাহরণ ১: match() মেথড ব্যবহার

import java.util.regex.*;

public class RegexExample {
    public static void main(String[] args) {
        String regex = "hello";
        String text = "hello world";
        
        // Pattern তৈরি করুন
        Pattern pattern = Pattern.compile(regex);
        
        // Matcher তৈরি করুন
        Matcher matcher = pattern.matcher(text);
        
        // পুরো স্ট্রিং মেলানো হচ্ছে কিনা পরীক্ষা করুন
        boolean isMatch = matcher.matches();
        System.out.println("Does the text match the regex? " + isMatch); // false
    }
}

ব্যাখ্যা:

  • এখানে matches() মেথডটি চেক করে যে পুরো text স্ট্রিংটি regex প্যাটার্নের সাথে মেলে কিনা। কারণ পুরো text স্ট্রিংটি "hello world" এবং "hello" রেগুলার এক্সপ্রেশনটির সাথে পুরোপুরি মেলে না, তাই আউটপুট false হবে।

উদাহরণ ২: find() মেথড ব্যবহার

import java.util.regex.*;

public class RegexExample {
    public static void main(String[] args) {
        String regex = "world";
        String text = "hello world";
        
        // Pattern তৈরি করুন
        Pattern pattern = Pattern.compile(regex);
        
        // Matcher তৈরি করুন
        Matcher matcher = pattern.matcher(text);
        
        // স্ট্রিংয়ে প্যাটার্ন খুঁজুন
        boolean isFound = matcher.find();
        System.out.println("Pattern found: " + isFound); // true
    }
}

ব্যাখ্যা:

  • এখানে find() মেথডটি স্ট্রিংয়ের মধ্যে "world" প্যাটার্নটি খুঁজে পাচ্ছে, তাই আউটপুট true হবে।

উদাহরণ ৩: group() এবং start() / end() মেথড ব্যবহার

import java.util.regex.*;

public class RegexExample {
    public static void main(String[] args) {
        String regex = "(\\d+)";
        String text = "There are 123 apples";
        
        // Pattern তৈরি করুন
        Pattern pattern = Pattern.compile(regex);
        
        // Matcher তৈরি করুন
        Matcher matcher = pattern.matcher(text);
        
        // find() মেথড ব্যবহার করে ম্যাচ খুঁজুন
        if (matcher.find()) {
            System.out.println("Matched number: " + matcher.group());  // 123
            System.out.println("Start position: " + matcher.start());   // 10
            System.out.println("End position: " + matcher.end());       // 13
        }
    }
}

ব্যাখ্যা:

  • এখানে group() মেথডটি প্রথম ম্যাচ করা সংখ্যা (123) রিটার্ন করবে।
  • start() এবং end() মেথডগুলি ম্যাচের শুরু এবং শেষ পজিশন দেখাবে।

উদাহরণ ৪: replaceAll() মেথড ব্যবহার

import java.util.regex.*;

public class RegexExample {
    public static void main(String[] args) {
        String regex = "apple";
        String text = "apple orange apple banana apple";
        
        // 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 fruit
    }
}

ব্যাখ্যা:

  • এখানে replaceAll() মেথডটি স্ট্রিংয়ে সব "apple" সাবস্ট্রিংগুলোকে "fruit"-এ রিপ্লেস করে।

  1. Pattern.compile(): এটি একটি রেগুলার এক্সপ্রেশন প্যাটার্নকে কম্পাইল করে এবং একটি Pattern অবজেক্ট তৈরি করে যা পরবর্তী সময়ে Matcher ক্লাসের মাধ্যমে ব্যবহার করা যায়।
  2. Matcher: এটি স্ট্রিংয়ের সাথে Pattern মেলানোর জন্য ব্যবহৃত হয় এবং বিভিন্ন মেথডের মাধ্যমে স্ট্রিংয়ের মধ্যে প্যাটার্ন খোঁজা, প্রক্রিয়া করা, রিপ্লেস করা ইত্যাদি কাজ করতে পারে।

Regex জাভায় স্ট্রিং ম্যাচিং, ফিল্টারিং, বা প্যাটার্ন চেকিং এর জন্য অত্যন্ত গুরুত্বপূর্ণ টুল, এবং এটি PatternMatcher ক্লাসের মাধ্যমে কার্যকরভাবে পরিচালিত হতে পারে।

Content added By
Promotion

Are you sure to start over?

Loading...