Java Regex (Regular Expressions) ব্যবহার করে আপনি স্ট্রিংয়ের মধ্যে একটি নির্দিষ্ট প্যাটার্ন বা নিয়ম অনুসারে অনুসন্ধান (search), পরিবর্তন (replace), অথবা সঠিকতা যাচাই (validation) করতে পারেন। Pattern এবং Matcher ক্লাস দুটি গুরুত্বপূর্ণ উপাদান, যা Java-তে রেগুলার এক্সপ্রেশন (regex) এর কার্যকারিতা প্রদান করে।
১. Pattern ক্লাস:
Pattern ক্লাসটি একটি কম্পাইল করা রেগুলার এক্সপ্রেশন রিপ্রেজেন্টেশন, যা স্ট্রিং প্যাটার্নের সাথে মেলানোর জন্য ব্যবহৃত হয়। এটি java.util.regex প্যাকেজে অন্তর্ভুক্ত এবং এটি রেগুলার এক্সপ্রেশন কম্পাইল ও কনফিগার করতে সাহায্য করে।
Pattern ক্লাসের কিছু গুরুত্বপূর্ণ মেথড:
compile(String regex): এই মেথডটি একটি স্ট্রিং প্যাটার্ন নেয় এবং সেই প্যাটার্ন থেকে একটিPatternঅবজেক্ট তৈরি করে।compile(String regex, int flags): এটি রেগুলার এক্সপ্রেশন এবং ফ্ল্যাগ নেয়, যা প্যাটার্নের আচরণ নিয়ন্ত্রণ করতে সাহায্য করে (যেমন, case-insensitive matching)।matcher(CharSequence input): এই মেথডটি একটি ইনপুট স্ট্রিংয়ের সাথে প্যাটার্ন ম্যাচ করতে একটিMatcherঅবজেক্ট তৈরি করে।
উদাহরণ: Pattern ক্লাস ব্যবহার
import java.util.regex.*;
public class PatternExample {
public static void main(String[] args) {
// Pattern তৈরি করা
Pattern pattern = Pattern.compile("a*b");
// Matcher তৈরি করা
Matcher matcher = pattern.matcher("aaab");
// মেলানো হচ্ছে
boolean matchFound = matcher.matches();
System.out.println("Match found: " + matchFound); // Output: Match found: true
}
}
ব্যাখ্যা:
Pattern.compile("a*b")— এই রেগুলার এক্সপ্রেশনটি বলে যে স্ট্রিংয়ের মধ্যেaশূন্য বা একাধিক বার থাকতে পারে এবং তারপরে একটিbথাকতে হবে।matcher.matches()— এটি স্ট্রিংটি প্যাটার্নের সাথে পুরোপুরি মেলে কিনা তা পরীক্ষা করে।
২. Matcher ক্লাস:
Matcher ক্লাসটি একটি ইনপুট স্ট্রিংয়ের সাথে Pattern ক্লাসের প্যাটার্ন মেলানোর জন্য ব্যবহৃত হয়। এটি একটি Pattern অবজেক্ট থেকে তৈরি হয় এবং স্ট্রিংয়ের মধ্যে প্যাটার্ন খোঁজার বিভিন্ন কার্যকলাপ (methods) প্রদান করে।
Matcher ক্লাসের কিছু গুরুত্বপূর্ণ মেথড:
matches(): এটি ইনপুট স্ট্রিংয়ের পুরো অংশের সাথে প্যাটার্ন মেলে কিনা তা পরীক্ষা করে।find(): এটি স্ট্রিংয়ের মধ্যে প্যাটার্নটির একটি বা একাধিক ইনস্ট্যান্স খুঁজে বের করে।find()মেথডটি প্রতিবার কল করার পর প্যাটার্নের পরবর্তী ম্যাচটি খুঁজে বের করে।group(): এটি খুঁজে পাওয়া ম্যাচের অংশ ফেরত দেয়।replaceAll(String replacement): এটি প্যাটার্নের সব ম্যাচকে একটি নতুন স্ট্রিং দ্বারা প্রতিস্থাপন করে।
উদাহরণ: Matcher ক্লাস ব্যবহার
import java.util.regex.*;
public class MatcherExample {
public static void main(String[] args) {
// Pattern তৈরি করা
Pattern pattern = Pattern.compile("\\d+"); // ডিজিটের একটি প্যাটার্ন
// Matcher তৈরি করা
Matcher matcher = pattern.matcher("The price is 100 dollars");
// find() মেথড ব্যবহার করে প্যাটার্ন খোঁজা
while (matcher.find()) {
System.out.println("Found match: " + matcher.group());
}
}
}
Output:
Found match: 100
ব্যাখ্যা:
Pattern.compile("\\d+"): এই প্যাটার্নটি সমস্ত ডিজিট (0-9) এর এক বা একাধিক আক্ষরিক মান খুঁজে।matcher.find(): এটি ইনপুট স্ট্রিংয়ের মধ্যে প্যাটার্নের মেলানো অংশ খুঁজে বের করে এবং পরবর্তী ম্যাচ পেতেfind()বার বার কল করা যেতে পারে।matcher.group(): এটি খুঁজে পাওয়া ম্যাচটি ফেরত দেয়।
৩. Pattern এবং Matcher ক্লাসের মধ্যে সম্পর্ক:
- Pattern: এটি একটি রেগুলার এক্সপ্রেশন প্যাটার্নের কম্পাইল্ড রূপ যা Matcher ক্লাসের সাহায্যে ইনপুট স্ট্রিংয়ের সাথে মেলানোর জন্য ব্যবহৃত হয়।
- Matcher: এটি Pattern অবজেক্টের সাথে কাজ করে এবং ইনপুট স্ট্রিংয়ের মধ্যে প্যাটার্ন খোঁজে এবং মেলে কিনা তা পরীক্ষা করে।
৪. Pattern Flags:
Pattern ক্লাসের সাথে ফ্ল্যাগ ব্যবহার করে আপনি প্যাটার্নের আচরণ পরিবর্তন করতে পারেন। কিছু সাধারণ ফ্ল্যাগ:
Pattern.CASE_INSENSITIVE: প্যাটার্নে case-insensitive ম্যাচিং সক্ষম করে।Pattern.DOTALL: ডট (.) মেটা ক্যারেক্টারকে সমস্ত অক্ষরের জন্য (এমনকি newline) ম্যাচ করতে সক্ষম করে।Pattern.MULTILINE: এই ফ্ল্যাগটি স্ট্রিংয়ের শুরু এবং শেষের মধ্যে^এবং$মেটা ক্যারেক্টারের আচরণ পরিবর্তন করে।
উদাহরণ: Pattern Flags ব্যবহার
import java.util.regex.*;
public class PatternFlagsExample {
public static void main(String[] args) {
// CASE_INSENSITIVE ফ্ল্যাগ দিয়ে Pattern তৈরি
Pattern pattern = Pattern.compile("hello", Pattern.CASE_INSENSITIVE);
// Matcher তৈরি করা
Matcher matcher = pattern.matcher("HeLLo");
// match() মেথড ব্যবহার
boolean matchFound = matcher.matches();
System.out.println("Match found: " + matchFound); // Output: Match found: true
}
}
৫. Advanced Example: Replace All Occurrences:
import java.util.regex.*;
public class ReplaceAllExample {
public static void main(String[] args) {
// Pattern তৈরি করা
Pattern pattern = Pattern.compile("\\d+");
// Matcher তৈরি করা
Matcher matcher = pattern.matcher("I have 100 apples and 200 bananas.");
// সমস্ত ডিজিটের অবস্থান পরিবর্তন করা
String replacedString = matcher.replaceAll("X");
System.out.println(replacedString); // Output: I have X apples and X bananas.
}
}
- Pattern এবং Matcher ক্লাস Java Regex-এর মৌলিক উপাদান। Pattern ক্লাস রেগুলার এক্সপ্রেশন প্যাটার্নের কম্পাইলড রূপ প্রদান করে, এবং Matcher ক্লাস সেই প্যাটার্নের সাহায্যে স্ট্রিংয়ের সাথে মেলানোর কাজ করে।
- Pattern.compile() দিয়ে প্যাটার্ন তৈরি করা হয় এবং Matcher দিয়ে সেই প্যাটার্নের মেলানো অংশ বা পরিবর্তন করা যায়।
- Regex কার্যকরভাবে স্ট্রিং প্রক্রিয়াকরণে ব্যবহার করা হয়, যেমন ফাইল নাম চেক করা, ইনপুট ভ্যালিডেশন, এবং স্ট্রিং রূপান্তর।
Read more