Regex (Regular Expressions) একটি শক্তিশালী টুল যা টেক্সট ডেটা প্রক্রিয়া করার জন্য ব্যবহৃত হয়। Java-এ java.util.regex প্যাকেজটি রেগুলার এক্সপ্রেশন (regex) এর সাথে কাজ করার জন্য প্রয়োজনীয় ক্লাস এবং মেথড সরবরাহ করে। এই প্যাকেজের অন্যতম প্রধান ক্লাস দুটি হল Pattern এবং Matcher।
- Pattern: এটি রেগুলার এক্সপ্রেশন ধারণ করে এবং এটি
Pattern.compile()মেথডের মাধ্যমে তৈরি করা হয়। - Matcher: এটি একটি ইনস্ট্যান্স যা Pattern এর সাথে String মেলানোর জন্য ব্যবহার করা হয়।
Pattern এবং Matcher এর মাধ্যমে String Matching
কিভাবে Pattern এবং Matcher কাজ করে:
- Pattern একটি রেগুলার এক্সপ্রেশন রচনা করে।
- Matcher সেই Pattern এর সাথে একটি String মেলানোর জন্য ব্যবহৃত হয়।
প্রক্রিয়াটি সাধারণত এই রকম:
- Pattern.compile(regex): একটি প্যাটার্ন তৈরি করুন।
- matcher.find() বা matcher.matches(): নির্দিষ্ট স্ট্রিংয়ের সাথে প্যাটার্ন মেলাতে চেষ্টা করুন।
- matcher.group(): মেলে গেলে ম্যাচের অংশ (যদি থাকে) বের করুন।
Matcher ক্লাসের কিছু গুরুত্বপূর্ণ মেথড:
find(): এটি স্ট্রিংয়ের মধ্যে প্যাটার্ন খুঁজে বের করে এবং এটি একটি বুলিয়ান রিটার্ন করে (যদি প্যাটার্ন মেলে থাকে তাহলেtrue, অন্যথায়false)।matches(): এটি স্ট্রিংয়ের পুরো অংশের সাথে প্যাটার্ন মেলানোর চেষ্টা করে। যদি পুরো স্ট্রিংয়ের সাথে প্যাটার্ন মেলে তবেtrueরিটার্ন করে, অন্যথায়false।group(): এটি ম্যাচের অংশ (matched substring) রিটার্ন করে।start(): এটি ম্যাচের শুরু পজিশন রিটার্ন করে।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 ব্যবহার করে আপনি অত্যন্ত শক্তিশালী এবং ডাইনামিক টেক্সট প্রক্রিয়া তৈরি করতে পারেন, যা ডেটা ভ্যালিডেশন, টেক্সট প্যাটার্ন খোঁজা, এবং ইনপুট বা আউটপুট প্রক্রিয়া অনেক সহজ করে তোলে।
Read more