Java Regex (Regular Expressions) এবং Reflection প্যাকেজের মাধ্যমে টেক্সট ফাইল প্রক্রিয়াজাত (process) করা একটি সাধারণ টাস্ক হতে পারে, যেখানে আপনি ফাইলের মধ্যে থাকা টেক্সট থেকে প্যাটার্ন ম্যাচিং বা ভ্যালিডেশন করতে পারেন। Regex ব্যবহার করে টেক্সট ফাইলের মধ্যে নির্দিষ্ট প্যাটার্ন বা তথ্য খুঁজে বের করা এবং এটি প্রক্রিয়াজাত করা সম্ভব।
এখানে আমরা দেখব কিভাবে Regex ব্যবহার করে একটি টেক্সট ফাইল পড়া এবং এতে নির্দিষ্ট প্যাটার্ন অনুসারে কার্যকরী কাজ করা যায়। এই উদাহরণে আমরা ফাইল থেকে কিছু তথ্য বের করবো, যেমন ইমেইল অ্যাড্রেস, ফোন নাম্বার, বা অন্য কিছু প্যাটার্ন।
উদাহরণ: Regex ব্যবহার করে টেক্সট ফাইল প্রক্রিয়াজাত করা
ধাপ ১: টেক্সট ফাইল তৈরি করা
ধরা যাক আমাদের একটি sample.txt নামক টেক্সট ফাইল রয়েছে যার মধ্যে বিভিন্ন ধরনের তথ্য রয়েছে:
sample.txt:
John's email is john.doe@example.com and his phone number is +1-800-555-1234.
Alice's email is alice.smith@domain.org and her phone number is +44-20-7946-0958.
This is just a random line without any pattern.
Contact Bob at bob@example.com for further information.
ধাপ ২: Java কোড ব্যবহার করে ফাইল প্রক্রিয়াজাত করা
এখন আমরা Regex ব্যবহার করে এই ফাইল থেকে ইমেইল অ্যাড্রেস এবং ফোন নাম্বার বের করবো।
import java.io.*;
import java.util.regex.*;
public class RegexFileProcessing {
public static void main(String[] args) {
// Define regex patterns for email and phone number
String emailRegex = "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$";
String phoneRegex = "^\\+\\d{1,3}-\\d{3}-\\d{3}-\\d{4}$";
// Compile the regex patterns
Pattern emailPattern = Pattern.compile(emailRegex);
Pattern phonePattern = Pattern.compile(phoneRegex);
try {
// Open the text file
BufferedReader reader = new BufferedReader(new FileReader("sample.txt"));
String line;
while ((line = reader.readLine()) != null) {
// Check for email matches
Matcher emailMatcher = emailPattern.matcher(line);
if (emailMatcher.find()) {
System.out.println("Found email: " + emailMatcher.group());
}
// Check for phone number matches
Matcher phoneMatcher = phonePattern.matcher(line);
if (phoneMatcher.find()) {
System.out.println("Found phone number: " + phoneMatcher.group());
}
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
- Regex Pattern:
- ইমেইল প্যাটার্ন:
^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$ - ফোন নাম্বার প্যাটার্ন:
^\\+\\d{1,3}-\\d{3}-\\d{3}-\\d{4}$
- ইমেইল প্যাটার্ন:
- BufferedReader: এটি ফাইল থেকে লাইন আকারে ইনপুট নিয়ে আসে।
- Pattern.compile(): এটি রেগুলার এক্সপ্রেশন প্যাটার্ন কম্পাইল করে একটি
Patternঅবজেক্ট তৈরি করে। - Matcher.find(): এটি ফাইলের প্রতিটি লাইনের মধ্যে প্যাটার্ন খুঁজে বের করে। যদি মিলে যায়, তাহলে
matcher.group()এর মাধ্যমে মিল পাওয়া অংশটি বের করা হয়।
ধাপ ৩: আউটপুট
আউটপুট:
Found email: john.doe@example.com
Found phone number: +1-800-555-1234
Found email: alice.smith@domain.org
Found phone number: +44-20-7946-0958
Found email: bob@example.com
পরবর্তী স্তরের প্রক্রিয়াজাতকরণ:
আপনি যদি ফাইলের মধ্যে আরও জটিল প্রক্রিয়া করতে চান, যেমন:
- একাধিক প্যাটার্ন খুঁজে বের করা।
- টেক্সট ফাইলের নির্দিষ্ট অংশের উপর ভিত্তি করে ফিল্টার বা প্রক্রিয়াজাতকরণ করা।
- রিফ্লেকশন ব্যবহার করে আরও উন্নত ফিচার তৈরি করা (যেমন, ক্লাস বা মেথডের ভিত্তিতে সিদ্ধান্ত নেওয়া)।
এমনকি আপনি Java Reflection প্যাকেজ ব্যবহার করে যেকোনো অবজেক্টের মেথড বা ফিল্ডের সাথে সম্পর্কিত প্রক্রিয়াজাতকরণ করতে পারেন, তবে সাধারণ টেক্সট ফাইল প্রক্রিয়াজাতকরণের জন্য Regex যথেষ্ট শক্তিশালী এবং কার্যকরী।
Regex দিয়ে আরও জটিল টেক্সট প্রক্রিয়াজাতকরণ উদাহরণ:
এছাড়া আপনি টেক্সট ফাইল থেকে অন্যান্য তথ্য যেমন ঠিকানা, নাম বা পোস্ট কোডও Regex এর মাধ্যমে বের করতে পারেন।
উদাহরণ: ঠিকানা এবং নাম বের করা:
import java.io.*;
import java.util.regex.*;
public class AddressAndNameExtraction {
public static void main(String[] args) {
// Regex for extracting names and addresses
String nameRegex = "[A-Za-z]+\\s[A-Za-z]+";
String addressRegex = "\\d+\\s[A-Za-z]+\\s[A-Za-z]+";
// Compile the regex patterns
Pattern namePattern = Pattern.compile(nameRegex);
Pattern addressPattern = Pattern.compile(addressRegex);
try {
// Open the text file
BufferedReader reader = new BufferedReader(new FileReader("sample.txt"));
String line;
while ((line = reader.readLine()) != null) {
// Extract names
Matcher nameMatcher = namePattern.matcher(line);
while (nameMatcher.find()) {
System.out.println("Found name: " + nameMatcher.group());
}
// Extract addresses
Matcher addressMatcher = addressPattern.matcher(line);
while (addressMatcher.find()) {
System.out.println("Found address: " + addressMatcher.group());
}
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
- Regex ব্যবহার করে আপনি টেক্সট ফাইল প্রক্রিয়াজাত করতে পারেন এবং বিভিন্ন ধরনের প্যাটার্ন খুঁজে বের করতে পারেন যেমন ইমেইল, ফোন নাম্বার, ঠিকানা বা নাম ইত্যাদি।
- Java Reflection প্যাকেজের মাধ্যমে আপনি আরও জটিল ফিচার তৈরি করতে পারেন, কিন্তু সাধারণ টেক্সট ফাইল প্রক্রিয়াজাতকরণের জন্য Regex যথেষ্ট কার্যকরী।
Read more