Java Reflection Package (java.lang.reflect) সাধারণত রানটাইমে ক্লাসের মেটাডেটা অ্যাক্সেস এবং ম্যানিপুলেট করার জন্য ব্যবহৃত হয়, তবে আপনি যেটি জানতে চাইছেন তা হলো ফাইল থেকে ডেটা পড়া এবং Regex দিয়ে Matching করা। এই কাজ দুটি সাধারণভাবে I/O Operations এবং Regular Expressions (Regex) ব্যবহার করে করা হয়, তবে এখানে Java Reflection Package সম্পর্কিত কোনও কাজ না থাকলেও, আমি আপনার প্রশ্নের ভিত্তিতে ফাইল থেকে ডেটা পড়া এবং Regex দিয়ে মেচিং করার প্রক্রিয়া ব্যাখ্যা করব।
ফাইল থেকে ডেটা পড়া এবং Regex দিয়ে Matching করা
আপনার মূল কাজ হচ্ছে ফাইল থেকে ডেটা পড়া এবং Regex ব্যবহার করে ঐ ডেটার মধ্যে কিছু নির্দিষ্ট প্যাটার্ন খোঁজা। Java-তে এই কাজটি করার জন্য আমরা দুটি প্রধান বিষয় ব্যবহার করব:
- ফাইল থেকে ডেটা পড়া: Java I/O বা NIO API ব্যবহার করে ফাইল থেকে ডেটা পড়া।
- Regex Matching: Java-এর
PatternএবংMatcherক্লাস ব্যবহার করে Regex দিয়ে ডেটা ম্যাচ করা।
ধাপ 1: ফাইল থেকে ডেটা পড়া
Java-তে ফাইল থেকে ডেটা পড়তে আপনি FileReader, BufferedReader বা Files ক্লাস ব্যবহার করতে পারেন। আমি এখানে BufferedReader ব্যবহার করব, কারণ এটি লাইন বাই লাইন ফাইল থেকে ডেটা পড়তে সহায়ক।
ধাপ 2: Regex দিয়ে Matching করা
ফাইল থেকে পড়া ডেটার মধ্যে একটি নির্দিষ্ট প্যাটার্ন খুঁজে বের করতে Regex ব্যবহার করা হবে।
ফাইল থেকে ডেটা পড়া এবং Regex দিয়ে Matching করার উদাহরণ:
ধরা যাক আমাদের একটি ফাইল আছে sample.txt, যার মধ্যে কিছু টেক্সট রয়েছে:
My phone number is +1-800-555-1234.
Email: user@example.com
Phone: +44-20-7946-0958
Hello world!
আমরা এখানে ফোন নম্বর এবং ইমেইল অ্যাড্রেস খুঁজে বের করতে চাই।
import java.io.*;
import java.util.regex.*;
public class FileRegexMatchingExample {
public static void main(String[] args) {
// File path
String filePath = "sample.txt";
// Regex patterns for matching phone number and email
String phoneRegex = "\\+\\d{1,3}-\\d{1,4}-\\d{1,4}-\\d{1,4}";
String emailRegex = "[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}";
// Compile the patterns
Pattern phonePattern = Pattern.compile(phoneRegex);
Pattern emailPattern = Pattern.compile(emailRegex);
try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = br.readLine()) != null) {
// Matching phone numbers
Matcher phoneMatcher = phonePattern.matcher(line);
while (phoneMatcher.find()) {
System.out.println("Found phone number: " + phoneMatcher.group());
}
// Matching email addresses
Matcher emailMatcher = emailPattern.matcher(line);
while (emailMatcher.find()) {
System.out.println("Found email address: " + emailMatcher.group());
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
- ফাইল থেকে ডেটা পড়া:
- আমরা
BufferedReaderব্যবহার করে ফাইলটি লাইন বাই লাইন পড়ছি। br.readLine()মেথডটি ফাইলের পরবর্তী লাইনটি রিটার্ন করে যতক্ষণ না ফাইলের শেষ হয়।
- আমরা
- Regex Pattern:
- Phone regex:
\\+\\d{1,3}-\\d{1,4}-\\d{1,4}-\\d{1,4}— এটি একটি সাধারণ ফোন নম্বর প্যাটার্ন যা আন্তর্জাতিক কোড (যেমন+1,+44) এবং ড্যাশ দিয়ে বিভক্ত নম্বরের সাথে মেলে। - Email regex:
[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}— এটি একটি সাধারণ ইমেইল প্যাটার্ন যা সমস্ত বৈধ ইমেইল ঠিকানার ফরম্যাট মেলে।
- Phone regex:
- Matching:
phoneMatcher.find()এবংemailMatcher.find()মেথডগুলি ফাইলের প্রতিটি লাইনে ফোন নম্বর বা ইমেইল ম্যাচ করতে সাহায্য করে।- যদি ম্যাচ পাওয়া যায়, তাহলে আমরা
matcher.group()ব্যবহার করে ম্যাচ হওয়া অংশটি প্রিন্ট করছি।
আউটপুট:
Found phone number: +1-800-555-1234
Found email address: user@example.com
Found phone number: +44-20-7946-0958
- ফাইল থেকে ডেটা পড়া: আপনি
BufferedReaderবাFiles.readAllLines()ব্যবহার করে সহজেই ফাইল থেকে ডেটা পড়তে পারেন। - Regex Matching:
PatternএবংMatcherক্লাসের মাধ্যমে আপনি যে কোনো স্ট্রিং বা ফাইলের মধ্যে নির্দিষ্ট প্যাটার্ন খুঁজে বের করতে পারেন, যেমন ফোন নম্বর, ইমেইল, ইউআরএল ইত্যাদি। - Efficient Input Validation: Regex ব্যবহার করে আপনি ইনপুট ভ্যালিডেশন এবং ডেটা ম্যানিপুলেশন খুবই কার্যকরভাবে করতে পারেন, বিশেষত যখন ফাইল থেকে তথ্য পড়া এবং সেটি যাচাই করতে হয়।
Read more