Java NIO (Non-blocking I/O) হল Java এর I/O API যা বিভিন্ন ধরনের I/O অপারেশন পরিচালনা করতে সক্ষম। যদিও Java NIO সরাসরি Regular Expressions (RegEx) এর জন্য ডিজাইন করা হয়নি, তবে Java এর java.util.regex প্যাকেজের মাধ্যমে Regular Expressions এর ব্যবহার করা যায়। RegEx ব্যবহার করে আপনি খুব দ্রুত এবং কার্যকরভাবে টেক্সট অনুসন্ধান এবং ম্যাচিং করতে পারেন।
এখানে আমরা Java Regular Expression ব্যবহারের মাধ্যমে টেক্সট অনুসন্ধান এবং ম্যাচিংয়ের প্রক্রিয়া এবং Java NIO এর মধ্যে ফাইল থেকে ডেটা পড়ে তা ম্যাচিং কিভাবে করা যায়, তা উদাহরণ সহ দেখব।
১. Regular Expression এর সংজ্ঞা
Regular Expressions একটি প্যাটার্ন বা রুলের মাধ্যমে স্ট্রিংগুলোতে অনুসন্ধান এবং ম্যাচিং করার জন্য ব্যবহৃত হয়। আপনি একটি নির্দিষ্ট প্যাটার্নের জন্য স্ট্রিং খুঁজতে বা স্ট্রিং এর সাথে মেলানোর জন্য Regular Expression ব্যবহার করতে পারেন।
Java তে Regular Expressions এর জন্য java.util.regex প্যাকেজ ব্যবহার করা হয়, যেখানে Pattern এবং Matcher ক্লাস দুটি প্রধান ক্লাস যা RegEx প্যাটার্ন তৈরি এবং স্ট্রিংয়ে ম্যাচিং পরিচালনা করতে সহায়ক।
২. Pattern এবং Matcher ক্লাস
- Pattern: এটি RegEx প্যাটার্ন তৈরি করতে ব্যবহৃত হয়। এটি একটি কম্পাইল করা Regular Expression।
- Matcher: এটি একটি স্ট্রিংয়ের বিরুদ্ধে Pattern এর মাধ্যমে ম্যাচিং অপারেশন পরিচালনা করে।
উদাহরণ: Regular Expression ব্যবহার করে Text Matching
import java.util.regex.*;
public class RegExExample {
public static void main(String[] args) {
String text = "Hello, welcome to Java NIO programming!";
// Regular Expression প্যাটার্ন তৈরি
String regex = "Java"; // আমরা 'Java' শব্দটি খুঁজব
// Pattern কম্পাইল করা
Pattern pattern = Pattern.compile(regex);
// Matcher তৈরি
Matcher matcher = pattern.matcher(text);
// Matcher দিয়ে ম্যাচিং পরীক্ষা করা
if (matcher.find()) {
System.out.println("Found a match: " + matcher.group());
} else {
System.out.println("No match found.");
}
}
}
এখানে, "Java" শব্দটি text স্ট্রিং এর মধ্যে খুঁজে বের করার জন্য Pattern এবং Matcher ব্যবহার করা হয়েছে। matcher.find() মেথডটি ডাটা স্ট্রিংয়ে একটি মেলা খুঁজে পেলে সত্য (true) ফেরত দেয়।
৩. File থেকে Text Search এবং Match করা
Java NIO এর মাধ্যমে ফাইলের মধ্যে টেক্সট খুঁজে বের করতে RegEx ব্যবহার করা যেতে পারে। নিচে একটি উদাহরণ দেওয়া হলো যেখানে একটি ফাইলের মধ্যে একটি নির্দিষ্ট প্যাটার্নের জন্য টেক্সট অনুসন্ধান করা হচ্ছে।
উদাহরণ: File থেকে Text Matching
import java.nio.file.*;
import java.util.regex.*;
import java.io.IOException;
public class FileSearchExample {
public static void main(String[] args) {
Path filePath = Paths.get("example.txt"); // ফাইলের পাথ
String regex = "Java"; // আমরা 'Java' শব্দটি ফাইলের মধ্যে খুঁজব
// ফাইল থেকে লাইন পড়া এবং RegEx দিয়ে টেক্সট ম্যাচিং করা
try {
Files.lines(filePath).forEach(line -> {
// Pattern কম্পাইল করা
Pattern pattern = Pattern.compile(regex);
// Matcher তৈরি করা
Matcher matcher = pattern.matcher(line);
// টেক্সট মেলানোর চেষ্টা করা
if (matcher.find()) {
System.out.println("Found match: " + matcher.group() + " in line: " + line);
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
}
এখানে, Files.lines() ব্যবহার করে ফাইল থেকে প্রতিটি লাইন পড়া হচ্ছে, এবং RegEx প্যাটার্ন দ্বারা প্রতিটি লাইনে "Java" শব্দটি খোঁজা হচ্ছে। যদি ম্যাচ পাওয়া যায়, তবে সেটি প্রিন্ট করা হবে।
৪. Pattern Matching এর আরও কিছু উদাহরণ
উদাহরণ ১: Email Address Match করা
ধরা যাক, আপনি একটি ফাইল বা টেক্সট স্ট্রিং থেকে বৈধ ইমেইল ঠিকানা খুঁজতে চান। এজন্য একটি RegEx প্যাটার্ন ব্যবহার করা যেতে পারে।
import java.util.regex.*;
public class EmailMatchExample {
public static void main(String[] args) {
String text = "Please contact us at support@example.com or info@domain.com";
// Email প্যাটার্ন
String regex = "[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}";
// Pattern কম্পাইল করা
Pattern pattern = Pattern.compile(regex);
// Matcher তৈরি করা
Matcher matcher = pattern.matcher(text);
// Email গুলো খুঁজে বের করা
while (matcher.find()) {
System.out.println("Found email: " + matcher.group());
}
}
}
এখানে, একটি RegEx প্যাটার্ন দিয়ে ইমেইল অ্যাড্রেস খোঁজা হয়েছে এবং matcher.find() দিয়ে সমস্ত বৈধ ইমেইল ঠিকানা প্রিন্ট করা হয়েছে।
উদাহরণ ২: Phone Number Match করা
ফোন নাম্বার যাচাই করার জন্য একটি সাধারণ RegEx প্যাটার্ন ব্যবহার করা যেতে পারে।
import java.util.regex.*;
public class PhoneNumberMatchExample {
public static void main(String[] args) {
String text = "Call me at 123-456-7890 or 987-654-3210";
// Phone number প্যাটার্ন
String regex = "\\d{3}-\\d{3}-\\d{4}"; // Format: 123-456-7890
// Pattern কম্পাইল করা
Pattern pattern = Pattern.compile(regex);
// Matcher তৈরি করা
Matcher matcher = pattern.matcher(text);
// Phone numbers খোঁজা
while (matcher.find()) {
System.out.println("Found phone number: " + matcher.group());
}
}
}
এখানে, ফোন নাম্বারের জন্য একটি RegEx প্যাটার্ন ব্যবহার করা হয়েছে যা ৩ ডিজিট-৩ ডিজিট-৪ ডিজিটের ফরম্যাটে ফোন নম্বর খুঁজবে।
Java Regular Expressions (RegEx) ব্যবহারের মাধ্যমে টেক্সট অনুসন্ধান এবং ম্যাচিং প্রক্রিয়া করা অনেক সহজ। Java NIO এর মাধ্যমে ফাইলের মধ্যে টেক্সট অনুসন্ধান করার জন্য Pattern এবং Matcher ব্যবহার করে আপনি বিভিন্ন ধরনের টেক্সট অনুসন্ধান এবং মেলানো কাজ করতে পারবেন। আপনি ইমেইল, ফোন নাম্বার বা অন্যান্য প্যাটার্নগুলোর জন্য RegEx প্যাটার্ন ব্যবহার করে সিস্টেমে কার্যকরীভাবে ডেটা বিশ্লেষণ করতে পারবেন।