Java NIO (New I/O) এর সাথে Regular Expressions (RegEx) ব্যবহার করে টেক্সট প্রোসেসিং একটি শক্তিশালী টুল, যা ডেটাতে প্যাটার্ন অনুসন্ধান এবং টেক্সট ম্যানিপুলেশনকে সহজ করে তোলে। Java তে RegEx এর মাধ্যমে আপনি টেক্সট ফিল্টারিং, টেক্সট ভ্যালিডেশন, টেক্সট রিপ্লেসমেন্ট, টেক্সট ম্যানিপুলেশন ইত্যাদি কার্যকরভাবে করতে পারেন।
Java NIO তে RegEx ব্যবহার করা হয় সাধারণত Pattern এবং Matcher ক্লাসের মাধ্যমে। Pattern ক্লাস RegEx প্যাটার্ন তৈরি করে, এবং Matcher ক্লাস সেই প্যাটার্নকে টেক্সটে প্রয়োগ করে।
এখানে আমরা কিছু সাধারণ উদাহরণ দেখব, যেখানে Java NIO এবং RegEx এর মাধ্যমে টেক্সট প্রোসেসিং করা হয়েছে।
১. Pattern এবং Matcher ক্লাসের পরিচিতি
- Pattern: এটি RegEx প্যাটার্ন তৈরি করে। প্যাটার্নটি ব্যবহার করে আপনি টেক্সটের মধ্যে নির্দিষ্ট ধরণের প্যাটার্ন খুঁজে পেতে পারেন।
- Matcher: এটি Pattern কে টেক্সটে প্রয়োগ করে, এবং সেই টেক্সটের মধ্যে RegEx এর সাথে মিল রয়েছে কি না তা যাচাই করে।
২. উদাহরণ ১: RegEx ব্যবহার করে টেক্সট খোঁজা
এখানে আমরা একটি সাধারণ উদাহরণ দেখব যেখানে একটি টেক্সটে একটি নির্দিষ্ট শব্দ বা প্যাটার্ন খোঁজা হবে।
উদাহরণ: টেক্সট থেকে নির্দিষ্ট শব্দ খোঁজা
import java.nio.file.*;
import java.io.IOException;
import java.util.regex.*;
public class RegExSearchExample {
public static void main(String[] args) throws IOException {
Path path = Paths.get("example.txt");
String text = new String(Files.readAllBytes(path));
// Regular Expression প্যাটার্ন তৈরি করা
String regex = "Java";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);
// প্যাটার্ন মেলানোর চেষ্টা করা
while (matcher.find()) {
System.out.println("Found at index: " + matcher.start());
}
}
}
ব্যাখ্যা:
- এখানে আমরা "Java" শব্দটি খুঁজে বের করার জন্য RegEx প্যাটার্ন তৈরি করেছি এবং তারপর
Matcher.find()ব্যবহার করে সেই শব্দটি টেক্সটের মধ্যে খুঁজে পেয়েছি। matcher.start()দিয়ে আমরা কোথায় সেই শব্দটি পাওয়া গেছে তা জানতে পারি।
৩. উদাহরণ ২: RegEx দিয়ে টেক্সট রিপ্লেসমেন্ট
RegEx ব্যবহার করে আপনি নির্দিষ্ট প্যাটার্নে থাকা টেক্সট অংশ পরিবর্তন করতে পারেন। এখানে আমরা একটি উদাহরণ দেখব, যেখানে একটি টেক্সট থেকে কিছু নির্দিষ্ট শব্দ পরিবর্তন করা হবে।
উদাহরণ: টেক্সটে শব্দ রিপ্লেস করা
import java.nio.file.*;
import java.io.IOException;
import java.util.regex.*;
public class RegExReplaceExample {
public static void main(String[] args) throws IOException {
Path path = Paths.get("example.txt");
String text = new String(Files.readAllBytes(path));
// Regular Expression প্যাটার্ন তৈরি করা
String regex = "\\d+"; // এটি সব ডিজিট (সংখ্যা) খুঁজবে
Pattern pattern = Pattern.compile(regex);
// Matcher তৈরি এবং রিপ্লেসমেন্ট
Matcher matcher = pattern.matcher(text);
String modifiedText = matcher.replaceAll("[REDACTED]"); // সব সংখ্যাকে "[REDACTED]" দ্বারা রিপ্লেস করা
System.out.println(modifiedText);
}
}
ব্যাখ্যা:
- এখানে আমরা "\d+" RegEx প্যাটার্ন ব্যবহার করেছি, যা সমস্ত ডিজিট (সংখ্যা) খুঁজে বের করবে।
replaceAll()মেথডের মাধ্যমে সমস্ত সংখ্যাকে[REDACTED]দিয়ে রিপ্লেস করেছি।
৪. উদাহরণ ৩: টেক্সট ভ্যালিডেশন
RegEx ব্যবহার করে আপনি ইনপুট টেক্সট বা ডেটার ভ্যালিডেশন করতে পারেন, যেমন ইমেইল ঠিকানা বা ফোন নম্বর যাচাই করা।
উদাহরণ: ইমেইল ভ্যালিডেশন
import java.util.regex.*;
public class EmailValidationExample {
public static void main(String[] args) {
String email = "test@example.com";
// ইমেইল প্যাটার্ন
String regex = "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(email);
// ইমেইল যাচাই করা
if (matcher.matches()) {
System.out.println("Valid email address");
} else {
System.out.println("Invalid email address");
}
}
}
ব্যাখ্যা:
- এখানে আমরা একটি RegEx প্যাটার্ন ব্যবহার করে ইমেইল ঠিকানা যাচাই করেছি।
matcher.matches()মেথডটি ইমেইল ঠিকানাটি প্যাটার্নের সাথে মিলছে কিনা তা পরীক্ষা করে।
৫. উদাহরণ ৪: টেক্সট থেকে নির্দিষ্ট অংশ বের করা
RegEx ব্যবহার করে আপনি একটি টেক্সটের মধ্যে থেকে নির্দিষ্ট অংশ বের করে আনার জন্য Matcher.group() মেথড ব্যবহার করতে পারেন।
উদাহরণ: টেক্সট থেকে ফোন নম্বর বের করা
import java.util.regex.*;
public class PhoneNumberExtractionExample {
public static void main(String[] args) {
String text = "My phone number is 123-456-7890.";
// ফোন নম্বরের জন্য RegEx প্যাটার্ন
String regex = "(\\d{3})-(\\d{3})-(\\d{4})";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);
// ফোন নম্বর ম্যাচ হলে তা বের করা
if (matcher.find()) {
System.out.println("Phone number: " + matcher.group());
System.out.println("Area Code: " + matcher.group(1));
System.out.println("Central Office Code: " + matcher.group(2));
System.out.println("Line Number: " + matcher.group(3));
}
}
}
ব্যাখ্যা:
- এখানে আমরা একটি ফোন নম্বরের RegEx প্যাটার্ন ব্যবহার করেছি যা "###-###-####" ফরম্যাটে থাকা নম্বরটি খুঁজে বের করবে।
matcher.group()ব্যবহার করে পুরো ফোন নম্বর এবং প্রতিটি অংশ আলাদাভাবে বের করা হয়েছে।
Java NIO এর RegEx ব্যবহার করে টেক্সট প্রোসেসিং করার মাধ্যমে আপনি দ্রুত এবং কার্যকরভাবে টেক্সট অনুসন্ধান, রিপ্লেসমেন্ট, ভ্যালিডেশন এবং অন্যান্য প্রক্রিয়া করতে পারেন। Pattern এবং Matcher ক্লাসগুলি RegEx প্যাটার্ন তৈরি এবং টেক্সটে তা প্রয়োগ করার জন্য ব্যবহার করা হয়।
এগুলির মাধ্যমে আপনি যেমন ইমেইল ঠিকানা যাচাই, ফোন নম্বরের অংশ বের করা, এবং ডেটা ফিল্টারিং সহজেই করতে পারবেন। Java NIO তে RegEx আপনাকে টেক্সট প্রোসেসিংয়ের জন্য অত্যন্ত কার্যকরী এবং নমনীয় উপায় প্রদান করে।
Read more