Matcher এর মাধ্যমে Pattern এর সাথে String Matching

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

265

Regex (Regular Expressions) একটি শক্তিশালী টুল যা টেক্সট ডেটা প্রক্রিয়া করার জন্য ব্যবহৃত হয়। Java-এ java.util.regex প্যাকেজটি রেগুলার এক্সপ্রেশন (regex) এর সাথে কাজ করার জন্য প্রয়োজনীয় ক্লাস এবং মেথড সরবরাহ করে। এই প্যাকেজের অন্যতম প্রধান ক্লাস দুটি হল Pattern এবং Matcher

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

Pattern এবং Matcher এর মাধ্যমে String Matching

কিভাবে Pattern এবং Matcher কাজ করে:

  1. Pattern একটি রেগুলার এক্সপ্রেশন রচনা করে।
  2. Matcher সেই Pattern এর সাথে একটি String মেলানোর জন্য ব্যবহৃত হয়।

প্রক্রিয়াটি সাধারণত এই রকম:

  1. Pattern.compile(regex): একটি প্যাটার্ন তৈরি করুন।
  2. matcher.find() বা matcher.matches(): নির্দিষ্ট স্ট্রিংয়ের সাথে প্যাটার্ন মেলাতে চেষ্টা করুন।
  3. matcher.group(): মেলে গেলে ম্যাচের অংশ (যদি থাকে) বের করুন।

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

  1. find(): এটি স্ট্রিংয়ের মধ্যে প্যাটার্ন খুঁজে বের করে এবং এটি একটি বুলিয়ান রিটার্ন করে (যদি প্যাটার্ন মেলে থাকে তাহলে true, অন্যথায় false)।
  2. matches(): এটি স্ট্রিংয়ের পুরো অংশের সাথে প্যাটার্ন মেলানোর চেষ্টা করে। যদি পুরো স্ট্রিংয়ের সাথে প্যাটার্ন মেলে তবে true রিটার্ন করে, অন্যথায় false
  3. group(): এটি ম্যাচের অংশ (matched substring) রিটার্ন করে।
  4. start(): এটি ম্যাচের শুরু পজিশন রিটার্ন করে।
  5. end(): এটি ম্যাচের শেষ পজিশন রিটার্ন করে।

উদাহরণ ১: find() মেথড দিয়ে Pattern Matching

import java.util.regex.*;

public class RegexExample {
    public static void main(String[] args) {
        // Regular expression pattern
        String regex = "a*b"; // 'a' zero or more times followed by 'b'

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

        // Sample text to be matched
        String text = "aaab";

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

        // Find the match
        if (matcher.find()) {
            System.out.println("Found match: " + matcher.group());
        } else {
            System.out.println("No match found.");
        }
    }
}

ব্যাখ্যা:

  • প্যাটার্ন "a*b" এর মানে হলো যে স্ট্রিংয়ে 0 বা তার বেশি 'a' থাকতে পারে এবং তার পরে একটি 'b' থাকবে।
  • matcher.find() এই প্যাটার্নটি স্ট্রিংয়ের মধ্যে খুঁজে এবং মেলে গেলে মেলা অংশ (matched substring) matcher.group() দিয়ে দেখানো হয়।

আউটপুট:

Found match: aaab

উদাহরণ ২: matches() মেথড দিয়ে Pattern Matching

import java.util.regex.*;

public class RegexExample {
    public static void main(String[] args) {
        // Regular expression pattern
        String regex = "a*b"; // 'a' zero or more times followed by 'b'

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

        // Sample text to be matched
        String text = "aaab";

        // Create a matcher object to match the entire string with the pattern
        Matcher matcher = pattern.matcher(text);

        // Check if the entire string matches the pattern
        if (matcher.matches()) {
            System.out.println("The entire string matches the pattern.");
        } else {
            System.out.println("The entire string does not match the pattern.");
        }
    }
}

ব্যাখ্যা:

  • matcher.matches() স্ট্রিংয়ের পুরো অংশের সাথে প্যাটার্নটি মেলে কিনা তা পরীক্ষা করে।
  • যদি পুরো স্ট্রিংয়ের সাথে প্যাটার্ন মেলে, তবে true রিটার্ন করবে, অন্যথায় false

আউটপুট:

The entire string matches the pattern.

উদাহরণ ৩: Matcher ব্যবহার করে Multiple Matches খোঁজা

import java.util.regex.*;

public class RegexExample {
    public static void main(String[] args) {
        // Regular expression pattern to find words starting with 'a'
        String regex = "\\ba\\w*"; // \\b for word boundary, a followed by any word characters

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

        // Sample text to be matched
        String text = "apple banana apricot aardvark";

        // Create a matcher object to find multiple matches
        Matcher matcher = pattern.matcher(text);

        // Find and print all matches
        while (matcher.find()) {
            System.out.println("Found match: " + matcher.group());
        }
    }
}

ব্যাখ্যা:

  • \\ba\\w* প্যাটার্নটি এমন শব্দ খুঁজে যা 'a' দিয়ে শুরু হয় এবং তারপরে যেকোনো সংখ্যক অক্ষর থাকে।
  • matcher.find() মেথডের মাধ্যমে একাধিক ম্যাচ খোঁজা যায় এবং প্রতিটি ম্যাচের জন্য matcher.group() ব্যবহার করে ম্যাচের অংশ দেখানো হয়।

আউটপুট:

Found match: apple
Found match: apricot
Found match: aardvark

উদাহরণ ৪: Matcher দিয়ে Grouping

import java.util.regex.*;

public class RegexExample {
    public static void main(String[] args) {
        // Regular expression pattern with groups
        String regex = "(\\d+)-(\\d+)-(\\d+)"; // Matches dates in the format 'YYYY-MM-DD'

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

        // Sample text (date in 'YYYY-MM-DD' format)
        String text = "2023-05-15";

        // Create a matcher object
        Matcher matcher = pattern.matcher(text);

        // Check for a match and extract groups
        if (matcher.find()) {
            System.out.println("Year: " + matcher.group(1));
            System.out.println("Month: " + matcher.group(2));
            System.out.println("Day: " + matcher.group(3));
        } else {
            System.out.println("No match found.");
        }
    }
}

ব্যাখ্যা:

  • group(1), group(2), এবং group(3) প্যাটার্নের গ্রুপ ১, গ্রুপ ২ এবং গ্রুপ ৩ (অর্থাৎ YYYY, MM, DD) এর মান নির্ধারণ করবে।
  • এখানে () ব্যবহার করা হয়েছে প্যাটার্নের মধ্যে গ্রুপিং করার জন্য, যা নির্দিষ্ট অংশ আলাদা করতে সহায়তা করে।

আউটপুট:

Year: 2023
Month: 05
Day: 15

Java-তে Regex এবং Matcher ক্লাসের মাধ্যমে আপনি খুব সহজে string matching এবং pattern matching করতে পারেন। find(), matches(), group() এবং start() ইত্যাদি মেথড ব্যবহার করে আপনি টেক্সটের মধ্যে প্যাটার্ন খুঁজে বের করতে পারেন এবং তার সাথে কাজ করতে পারেন। Regex ব্যবহার করে আপনি অত্যন্ত শক্তিশালী এবং ডাইনামিক টেক্সট প্রক্রিয়া তৈরি করতে পারেন, যা ডেটা ভ্যালিডেশন, টেক্সট প্যাটার্ন খোঁজা, এবং ইনপুট বা আউটপুট প্রক্রিয়া অনেক সহজ করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...