Java NIO (New Input/Output) API মূলত I/O অপারেশন উন্নত করার জন্য তৈরি হলেও, Java-এর Pattern এবং Matcher ক্লাসগুলি java.util.regex প্যাকেজের অংশ। এই ক্লাসগুলি ব্যবহার করে আপনি regular expressions (regex) এর মাধ্যমে স্ট্রিং গুলি খুঁজে বের করতে, মানানসই করতে এবং সেগুলোর ওপর কাজ করতে পারেন। যদিও এই ক্লাসগুলি NIO এর অংশ নয়, কিন্তু Java NIO ব্যবহার করার সময় স্ট্রিং অপারেশনগুলোতে তাদের ব্যবহার খুবই গুরুত্বপূর্ণ হতে পারে, যেমন ফাইলের কনটেন্ট বা নেটওয়ার্ক ডেটার উপর রেগুলার এক্সপ্রেশন প্রয়োগ করা।
Pattern Class
Pattern ক্লাস Java regex এর মস্তিষ্ক। এটি একটি কম্পাইলড রেগুলার এক্সপ্রেশন যা পরবর্তী স্ট্রিং ম্যাচিং অপারেশনে ব্যবহার করা হয়। Pattern ক্লাসের মাধ্যমে রেগুলার এক্সপ্রেশন তৈরি করা হয় যা স্ট্রিং ম্যানিপুলেশন অপারেশনের জন্য সঠিক নিয়ম অনুসরণ করে।
Matcher Class
Matcher ক্লাস একটি Pattern অবজেক্টের সাহায্যে স্ট্রিংয়ের সাথে ম্যাচিং অপারেশন পরিচালনা করে। Matcher ক্লাসের বিভিন্ন মেথডের মাধ্যমে আপনি স্ট্রিংয়ের মধ্যে নির্দিষ্ট প্যাটার্ন অনুসন্ধান, রিপ্লেসমেন্ট বা ম্যাচিং করতে পারেন।
Pattern এবং Matcher Class এর মূল বৈশিষ্ট্য
১. Pattern Class
Pattern ক্লাস java.util.regex.Pattern প্যাকেজের অংশ এবং এটি রেগুলার এক্সপ্রেশন তৈরি ও কম্পাইল করার জন্য ব্যবহৃত হয়। রেগুলার এক্সপ্রেশন একটি প্যাটার্ন যা নির্দিষ্ট স্ট্রিংগুলিকে খুঁজে বের করতে, পরিবর্তন করতে বা যাচাই করতে সহায়তা করে। এই প্যাটার্নের জন্য আপনি একটি স্ট্রিং প্যাটার্ন নির্দিষ্ট করেন এবং এটি স্ট্রিংয়ের উপর প্রয়োগ করা হয়।
Pattern ক্লাসের মেথড:
compile(String regex): একটি রেগুলার এক্সপ্রেশন কম্পাইল করে একটিPatternঅবজেক্ট তৈরি করে।matcher(CharSequence input): একটি স্ট্রিং অথবা চারসিকোয়েন্সের সাথে প্যাটার্ন ম্যাচিং করার জন্য একটিMatcherঅবজেক্ট তৈরি করে।matches(): একটি স্ট্রিং প্যাটার্নের সাথে পুরোপুরি ম্যাচ করে কিনা তা চেক করে।
Pattern Class উদাহরণ:
import java.util.regex.*;
public class PatternExample {
public static void main(String[] args) {
String regex = "abc";
Pattern pattern = Pattern.compile(regex);
// String to be searched
String input = "abcabcabc";
Matcher matcher = pattern.matcher(input);
// Check if the pattern matches
while (matcher.find()) {
System.out.println("Found at index: " + matcher.start());
}
}
}
এখানে, "abc" প্যাটার্নটি "abcabcabc" স্ট্রিংয়ের মধ্যে খুঁজে বের করা হয়েছে এবং তার অবস্থান প্রিন্ট করা হয়েছে।
২. Matcher Class
Matcher ক্লাস Pattern ক্লাসের একটি অবজেক্ট যা একটি স্ট্রিংয়ের সাথে প্যাটার্ন মিলিয়ে ম্যাচিং অপারেশন পরিচালনা করে। আপনি Matcher ক্লাসের বিভিন্ন মেথড ব্যবহার করে রেগুলার এক্সপ্রেশন প্রয়োগ করতে পারেন।
Matcher ক্লাসের মেথড:
find(): এটি স্ট্রিংয়ের মধ্যে প্যাটার্ন খুঁজে পেলেtrueরিটার্ন করে।start(): এটি একটি ম্যাচের শুরু অবস্থান রিটার্ন করে।end(): এটি একটি ম্যাচের শেষ অবস্থান রিটার্ন করে।group(): এটি ম্যাচ হওয়া স্ট্রিং রিটার্ন করে।
Matcher Class উদাহরণ:
import java.util.regex.*;
public class MatcherExample {
public static void main(String[] args) {
String regex = "(\\d+)";
String input = "There are 123 apples and 456 oranges.";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
System.out.println("Found number: " + matcher.group());
}
}
}
এখানে, "\\d+" প্যাটার্নটি সংখ্যা খুঁজে বের করতে ব্যবহৃত হয়েছে এবং matcher.group() এর মাধ্যমে সেই সংখ্যা প্রিন্ট করা হচ্ছে।
Pattern এবং Matcher এর ব্যবহারের সুবিধা
১. ডাইনামিক স্ট্রিং প্যাটার্ন যাচাই
যদি আপনি কোনও ডেটা থেকে স্ট্রিং যাচাই করতে চান যেমন একটি ইউজার আইডি, ফোন নম্বর বা ইমেইল অ্যাড্রেস, রেগুলার এক্সপ্রেশন ব্যবহার করলে এটি অনেক সহজ এবং কার্যকরী হয়ে যায়।
২. টেক্সট প্রসেসিং এবং ম্যানিপুলেশন
Pattern এবং Matcher ক্লাসের মাধ্যমে আপনি টেক্সট প্রসেসিং করতে পারবেন, যেমন:
- টেক্সট থেকে নির্দিষ্ট অংশ খুঁজে বের করা।
- টেক্সটের মধ্যে নির্দিষ্ট প্যাটার্ন প্রতিস্থাপন করা।
- টেক্সট ফিল্টার করা।
৩. ফাইল অথবা নেটওয়ার্ক ডেটা প্রক্রিয়া
Java NIO তে আপনি যখন ফাইল বা নেটওয়ার্ক ডেটা পড়েন, তখন Pattern এবং Matcher ব্যবহার করে আপনি ডেটার মধ্যে প্যাটার্ন খুঁজে বের করতে পারেন, যেমন একটি লগ ফাইল থেকে নির্দিষ্ট বার্তা বা ডেটা খোঁজা।
৪. ফ্লেক্সিবল ডেটা এক্সট্রাকশন
Matcher ক্লাসের group() মেথড ব্যবহার করে আপনি একটি স্ট্রিং থেকে বিভিন্ন অংশ বের করতে পারেন, যেমন একটি ইমেইল ঠিকানা থেকে ইউজারনেম এবং ডোমেইন আলাদা করা।
Java-র Pattern এবং Matcher ক্লাসগুলি রেগুলার এক্সপ্রেশন পরিচালনা করার জন্য খুবই শক্তিশালী টুল। এগুলি স্ট্রিং প্রক্রিয়া ও বিশ্লেষণে ব্যাপকভাবে ব্যবহৃত হয়। আপনি Pattern ক্লাস ব্যবহার করে একটি রেগুলার এক্সপ্রেশন তৈরি করতে পারেন এবং তারপর Matcher ক্লাস ব্যবহার করে সেই প্যাটার্নের সাথে স্ট্রিংয়ের মিল খুঁজে বের করতে পারেন।
Java NIO এর সাথে কাজ করার সময় স্ট্রিং প্রসেসিং বা ডেটা ফিল্টার করার প্রয়োজন হলে, Pattern এবং Matcher ক্লাস একটি অত্যন্ত কার্যকরী পদ্ধতি প্রদান করে, যা ডেটার সাথে উচ্চ মানের টেক্সট ম্যানিপুলেশন করতে সাহায্য করে।
Read more