Matcher Reset করা এবং পুনরায় Matching করা

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

354

Java-তে Matcher ক্লাস একটি গুরুত্বপূর্ণ অংশ, যা রেগুলার এক্সপ্রেশন (regex) প্যাটার্নের সাথে স্ট্রিংয়ের মিল বা ম্যাচ চেক করার জন্য ব্যবহৃত হয়। একবার Matcher অবজেক্ট তৈরি করার পর, আপনি স্ট্রিংয়ের সাথে প্যাটার্নের ম্যাচিং পরীক্ষা করতে পারেন। তবে, কখনও কখনও আপনাকে Matcher অবজেক্টের অবস্থান পুনরায় সেট (reset) করতে হতে পারে এবং তারপরে পুনরায় ম্যাচিং (matching) করতে হতে পারে, বিশেষত যখন আপনি একই Pattern ব্যবহার করে একাধিক ইনপুট স্ট্রিংয়ে ম্যাচিং করতে চান।

Matcher Reset করা এবং পুনরায় Matching করা:

1. reset() মেথড:

reset() মেথডটি Matcher অবজেক্টের অবস্থান (state) পুনরায় সেট করে, এবং এটি নতুন স্ট্রিংয়ের সাথে আবার ম্যাচিং শুরু করতে সক্ষম হয়। এটি দুটি ভাবে ব্যবহার করা যেতে পারে:

  • reset(): বর্তমান ইনপুট স্ট্রিংয়ের সাথে পুনরায় ম্যাচিং শুরু করে।
  • reset(CharSequence input): একটি নতুন ইনপুট স্ট্রিং প্রদান করে এবং সেটির সাথে পুনরায় ম্যাচিং শুরু করে।

উদাহরণ: Matcher reset করা এবং পুনরায় matching করা:

import java.util.regex.*;

public class MatcherResetExample {
    public static void main(String[] args) {
        // একটি রেগুলার এক্সপ্রেশন প্যাটার্ন তৈরি
        Pattern pattern = Pattern.compile("\\d+");  // যে কোন ডিজিটের এক বা একাধিক

        // প্রথম ইনপুট স্ট্রিং
        Matcher matcher = pattern.matcher("abc 123 def 456 ghi 789");

        // প্রথম স্ট্রিংয়ের মধ্যে ম্যাচিং করা
        while (matcher.find()) {
            System.out.println("Found match: " + matcher.group());
        }

        // Matcher reset করা
        matcher.reset("xyz 987 654 pqr");

        // reset-এর পরে নতুন ইনপুট স্ট্রিংয়ের মধ্যে ম্যাচিং করা
        while (matcher.find()) {
            System.out.println("Found match: " + matcher.group());
        }
    }
}

Output:

Found match: 123
Found match: 456
Found match: 789
Found match: 987
Found match: 654

ব্যাখ্যা:

  1. প্রথমে Pattern.compile("\\d+") দিয়ে একটি প্যাটার্ন তৈরি করা হয়েছে, যা একটি বা একাধিক ডিজিট ম্যাচ করে।
  2. প্রথম ইনপুট "abc 123 def 456 ghi 789" দিয়ে matcher.find() কল করা হয়েছে এবং এটি স্ট্রিংয়ের মধ্যে ডিজিটের সিরিজ গুলি খুঁজে বের করেছে।
  3. তারপর matcher.reset("xyz 987 654 pqr") কল করা হয়েছে, যা পুরনো ইনপুট স্ট্রিংয়ের অবস্থান থেকে Matcher অবজেক্টকে রিসেট করে নতুন ইনপুট স্ট্রিং "xyz 987 654 pqr" দিয়ে পুনরায় ম্যাচিং শুরু করে।
  4. নতুন ইনপুটে পুনরায় ডিজিট গুলি খুঁজে পাওয়া গেছে এবং সেগুলোর সাথে মিল করেছে।

reset() মেথডের আরেকটি ব্যবহার:

reset() মেথডটি একই ইনপুট স্ট্রিংয়ের সাথে পুনরায় ম্যাচিং শুরু করতে ব্যবহৃত হতে পারে, যেমন আপনি যদি একাধিক বার একই ইনপুটের সাথে বিভিন্ন প্যাটার্ন পরীক্ষা করতে চান।

import java.util.regex.*;

public class MatcherResetExample {
    public static void main(String[] args) {
        // একটি রেগুলার এক্সপ্রেশন প্যাটার্ন তৈরি
        Pattern pattern = Pattern.compile("\\d+");  // যে কোন ডিজিটের এক বা একাধিক

        // ইনপুট স্ট্রিং
        Matcher matcher = pattern.matcher("abc 123 def 456 ghi 789");

        // প্রথম স্ট্রিংয়ের মধ্যে ম্যাচিং করা
        while (matcher.find()) {
            System.out.println("Found match: " + matcher.group());
        }

        // Matcher reset করা, এবং নতুন প্যাটার্ন ব্যবহার করা
        pattern = Pattern.compile("[a-zA-Z]+");  // যে কোন অক্ষরের এক বা একাধিক
        matcher.reset("abc 123 def 456 ghi 789");

        // এখন নতুন প্যাটার্নের সাথে ম্যাচিং করা
        while (matcher.find()) {
            System.out.println("Found match: " + matcher.group());
        }
    }
}

Output:

Found match: 123
Found match: 456
Found match: 789
Found match: abc
Found match: def
Found match: ghi

ব্যাখ্যা:

  • প্রথমে, ডিজিটের জন্য একটি প্যাটার্ন দিয়ে স্ট্রিংটি ম্যাচ করা হয়।
  • তারপর, reset() মেথড ব্যবহার করে নতুন প্যাটার্ন ([a-zA-Z]+) সেট করা হয়েছে, যা শুধুমাত্র অক্ষরগুলিকে মেলাবে।
  • matcher.reset() এই নতুন প্যাটার্নের সাথে ইনপুট স্ট্রিং পুনরায় ম্যাচিং শুরু করেছে এবং এবার অক্ষরের সিরিজ বের করেছে।

reset() মেথডের কিছু মূল পয়েন্ট:

  1. অবস্থা পুনরায় সেট করা: reset() মেথড Matcher অবজেক্টের অবস্থান (position) এবং স্টেট পুনরায় সেট করে। এটি আপনার জন্য নতুন ইনপুট বা নতুন প্যাটার্ন দিয়ে আবার ম্যাচিং শুরু করতে সুবিধা প্রদান করে।
  2. নতুন ইনপুট: matcher.reset(CharSequence input) ব্যবহার করে আপনি নতুন ইনপুট স্ট্রিং দিয়ে ম্যাচিং শুরু করতে পারেন।
  3. পুনরায় ব্যবহার: একাধিক বার একই Pattern দিয়ে ম্যাচিং করতে Matcher অবজেক্ট পুনরায় ব্যবহার করা সম্ভব হয়।

reset() মেথডটি Matcher অবজেক্টের সাথে কাজ করার সময় খুবই কার্যকর। এটি স্ট্রিং এবং প্যাটার্ন পরিবর্তন করে পুনরায় ম্যাচিং শুরু করতে সহায়তা করে, যা অনেক পরিস্থিতিতে প্রয়োজন হতে পারে। এটি আপনাকে একই Pattern অবজেক্ট ব্যবহার করে একাধিক ইনপুট স্ট্রিংয়ে ম্যাচিং বা একাধিক প্যাটার্নের সাথে একই ইনপুট স্ট্রিং পরীক্ষা করতে সক্ষম করে।

Content added By
Promotion

Are you sure to start over?

Loading...