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() মেথডের দুটি ভিন্ন ভেরিয়েন্ট রয়েছে:
- Pattern.compile(String regex): একটি সাধারণ রেগুলার এক্সপ্রেশন প্যাটার্ন কম্পাইল করতে ব্যবহৃত হয়।
- Pattern.compile(String regex, int flags): এটি রেগুলার এক্সপ্রেশন প্যাটার্ন এবং ফ্ল্যাগস (যেমন
CASE_INSENSITIVE,MULTILINEইত্যাদি) গ্রহণ করে।
Matcher মেথড:
Matcher ক্লাসটি একটি স্ট্রিং এর সাথে Pattern মেলানোর জন্য ব্যবহৃত হয়। এটি বিভিন্ন মেথড প্রদান করে যা স্ট্রিং এর সাথে রেগুলার এক্সপ্রেশন মেলাতে সাহায্য করে।
Matcher ক্লাসের কিছু গুরুত্বপূর্ণ মেথড:
matches():
- এটি স্ট্রিং এর পুরোটা রেগুলার এক্সপ্রেশন এর সাথে মেলে কিনা তা চেক করে।
সিনট্যাক্স:
boolean matches = matcher.matches();ব্যবহার:
Pattern pattern = Pattern.compile("abc"); Matcher matcher = pattern.matcher("abc"); boolean isMatch = matcher.matches(); // returns truefind():
- এটি স্ট্রিং এর মধ্যে রেগুলার এক্সপ্রেশন প্যাটার্নটি খুঁজে বের করে। এটি এক বা একাধিক ম্যাচিং সাবস্ট্রিং খুঁজে বের করার জন্য ব্যবহার করা হয়।
সিনট্যাক্স:
boolean find = matcher.find();group():
- এটি স্ট্রিং এর মধ্যে প্রথম ম্যাচ করা সাবস্ট্রিং রিটার্ন করে।
সিনট্যাক্স:
String matchedGroup = matcher.group();replaceAll():
- এটি স্ট্রিং এর সবগুলো ম্যাচিং সাবস্ট্রিং রিপ্লেস করে।
সিনট্যাক্স:
String result = matcher.replaceAll(String replacement);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"-এ রিপ্লেস করে।
- Pattern.compile(): এটি একটি রেগুলার এক্সপ্রেশন প্যাটার্নকে কম্পাইল করে এবং একটি
Patternঅবজেক্ট তৈরি করে যা পরবর্তী সময়েMatcherক্লাসের মাধ্যমে ব্যবহার করা যায়। - Matcher: এটি স্ট্রিংয়ের সাথে
Patternমেলানোর জন্য ব্যবহৃত হয় এবং বিভিন্ন মেথডের মাধ্যমে স্ট্রিংয়ের মধ্যে প্যাটার্ন খোঁজা, প্রক্রিয়া করা, রিপ্লেস করা ইত্যাদি কাজ করতে পারে।
Regex জাভায় স্ট্রিং ম্যাচিং, ফিল্টারিং, বা প্যাটার্ন চেকিং এর জন্য অত্যন্ত গুরুত্বপূর্ণ টুল, এবং এটি Pattern ও Matcher ক্লাসের মাধ্যমে কার্যকরভাবে পরিচালিত হতে পারে।
Read more