Regex (Regular Expression) একটি শক্তিশালী টুল যা স্ট্রিং ম্যানিপুলেশন এবং প্যাটার্ন মাচিং এর জন্য ব্যবহৃত হয়। Java তে Regex এর ভূমিকা অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি বিভিন্ন ধরণের স্ট্রিং অনুসন্ধান, পরিবর্তন এবং যাচাই করার কাজ সহজ করে দেয়। Java তে Regex ব্যবহার করে আপনি স্ট্রিং যাচাই, স্ট্রিংয়ের মধ্যে প্যাটার্ন খুঁজে বের করা, স্ট্রিংয়ে কিছু পরিবর্তন আনা, বা কিছু নির্দিষ্ট প্যাটার্নের ভিত্তিতে স্ট্রিং ভাগ করতে পারেন।
Regex এর ভূমিকা:
- স্ট্রিং ম্যানিপুলেশন:
- Java তে Regex ব্যবহার করে স্ট্রিংয়ের মধ্যে নির্দিষ্ট প্যাটার্ন খুঁজে বের করা বা স্ট্রিংয়ের কিছু অংশ পরিবর্তন করা সহজ হয়।
- উদাহরণস্বরূপ, আপনি ইমেইল ঠিকানা, ফোন নাম্বার বা অন্যান্য ডাটা ফরম্যাটের যাচাই করতে Regex ব্যবহার করতে পারেন।
- প্যাটার্ন ম্যাচিং:
- Regex এর প্রধান ভূমিকা হলো স্ট্রিং এর মধ্যে নির্দিষ্ট প্যাটার্ন খুঁজে বের করা। আপনি Regex ব্যবহার করে সহজেই যাচাই করতে পারেন যে একটি স্ট্রিং একটি নির্দিষ্ট ফরম্যাট মেনে চলছে কি না (যেমন ইমেইল, ফোন নাম্বার, বা পিন কোড)।
- উদাহরণস্বরূপ, আপনি একটি স্ট্রিং যাচাই করতে পারেন যে এটি একটি বৈধ ইমেইল ঠিকানা কিনা।
- স্ট্রিং স্প্লিট:
- Regex ব্যবহার করে আপনি স্ট্রিং বিভক্ত করতে পারেন। এর মাধ্যমে আপনি একটি স্ট্রিংকে নির্দিষ্ট সেপারেটরের ভিত্তিতে ভাগ করতে পারেন (যেমন স্পেস, কমা, বা অন্যান্য সেপারেটর)।
- স্ট্রিং রিপ্লেসমেন্ট:
- Regex দিয়ে স্ট্রিংয়ের কিছু অংশ সহজে রিপ্লেস করা যায়, যেমন একটি প্যাটার্নের সমস্ত উদাহরণ সরিয়ে দেয়া বা প্রতিস্থাপন করা।
- স্ট্রিং ভ্যালিডেশন:
- Java তে Regex ব্যবহার করে আপনি কোন ডেটার বৈধতা পরীক্ষা করতে পারেন, যেমন পাসওয়ার্ড, ফোন নাম্বার, ইমেইল ঠিকানা ইত্যাদি।
Java Regex-এর প্রধান ক্লাসগুলি:
- Pattern:
Patternক্লাসটি Regex প্যাটার্নের সংজ্ঞা দেয় এবং এটি Regex প্যাটার্নের মেলানো এবং যাচাই করার জন্য ব্যবহৃত হয়।Pattern.compile()মেথডের মাধ্যমে একটি প্যাটার্ন কম্পাইল করা হয়।
- Matcher:
Matcherক্লাসটি Regex প্যাটার্নের সাথে স্ট্রিং মেলানোর কাজ করে। এটি প্যাটার্নে মেলানো স্ট্রিংয়ের অংশ বের করে এবং মেলানো স্ট্রিংয়ের অবস্থান (indexes) দিতে সাহায্য করে।matcher.find(),matcher.matches(),matcher.replaceAll()ইত্যাদি মেথড ব্যবহার করে স্ট্রিংয়ের মধ্যে প্যাটার্ন অনুসন্ধান এবং পরিবর্তন করা যায়।
Java তে Regex এর ব্যবহার:
1. Regex দিয়ে স্ট্রিং মেলানো:
import java.util.regex.*;
public class RegexExample {
public static void main(String[] args) {
// স্ট্রিং প্যাটার্ন তৈরি
String pattern = "[a-zA-Z]+";
// প্যাটার্ন কম্পাইল করা
Pattern r = Pattern.compile(pattern);
// স্ট্রিং এবং প্যাটার্নে মেলানো
Matcher m = r.matcher("Hello");
if (m.matches()) {
System.out.println("The string matches the pattern.");
} else {
System.out.println("The string does not match the pattern.");
}
}
}
এখানে, "[a-zA-Z]+" একটি Regex প্যাটার্ন যা শুধুমাত্র ইংরেজি অক্ষরগুলো মেলে। স্ট্রিংটি যদি শুধুমাত্র ইংরেজি অক্ষর থাকে, তাহলে তা মিলে যাবে।
2. Regex দিয়ে স্ট্রিং খুঁজে বের করা:
import java.util.regex.*;
public class RegexSearch {
public static void main(String[] args) {
String input = "My email is example@example.com";
String regex = "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
System.out.println("Found email: " + matcher.group());
} else {
System.out.println("No email found.");
}
}
}
এখানে, "([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,})" একটি Regex প্যাটার্ন যা একটি বৈধ ইমেইল ঠিকানা খুঁজে বের করে।
3. Regex দিয়ে স্ট্রিং রিপ্লেসমেন্ট:
import java.util.regex.*;
public class RegexReplace {
public static void main(String[] args) {
String input = "My phone number is 123-456-7890.";
String regex = "\\d{3}-\\d{3}-\\d{4}"; // Matching phone number format
String replacement = "XXX-XXX-XXXX";
String result = input.replaceAll(regex, replacement);
System.out.println("Updated String: " + result);
}
}
এখানে, replaceAll() মেথড ব্যবহার করে ফোন নাম্বারটি রিপ্লেস করা হয়েছে।
4. Regex দিয়ে স্ট্রিং স্প্লিট:
import java.util.regex.*;
public class RegexSplit {
public static void main(String[] args) {
String input = "apple,banana,orange,grape";
String regex = ",";
String[] fruits = input.split(regex);
for (String fruit : fruits) {
System.out.println(fruit);
}
}
}
এখানে, কমা (,) সেপারেটরের ভিত্তিতে স্ট্রিংটি বিভক্ত করা হয়েছে।
5. Regex দিয়ে পাসওয়ার্ড ভ্যালিডেশন:
import java.util.regex.*;
public class PasswordValidation {
public static void main(String[] args) {
String password = "Abc12345!";
String regex = "^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#&()–[{}]:;',?/*~$^+=<>]).{8,}$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(password);
if (matcher.matches()) {
System.out.println("Valid password.");
} else {
System.out.println("Invalid password.");
}
}
}
এখানে, Regex দিয়ে একটি পাসওয়ার্ডের জন্য স্ট্রং পাসওয়ার্ড প্যাটার্ন যাচাই করা হয়েছে।
Java Regex এর সুবিধা:
- স্ট্রিং ম্যানিপুলেশন সহজ করা: Regex এর মাধ্যমে স্ট্রিং খুঁজে বের করা, পরিবর্তন করা, স্প্লিট করা ইত্যাদি কাজ খুব সহজ হয়ে যায়।
- ডাটা ভ্যালিডেশন: আপনি ইমেইল ঠিকানা, ফোন নাম্বার, পাসওয়ার্ড ইত্যাদি যাচাই করতে Regex ব্যবহার করতে পারেন।
- পারফরম্যান্স: Regex দ্রুত কাজ করে এবং এটি কম্পাইল টাইমে প্যাটার্ন সংরক্ষণ করে, তাই এটি রানটাইমে দ্রুত কাজ করে।
Java Regex এর সীমাবদ্ধতা:
- কমপ্লেক্সিটি: কিছু কমপ্লেক্স প্যাটার্ন তৈরির সময় Regex কঠিন হয়ে যেতে পারে, বিশেষত খুবই দীর্ঘ বা জটিল স্ট্রিং খুঁজে বের করার ক্ষেত্রে।
- ডিবাগিং চ্যালেঞ্জ: জটিল Regex প্যাটার্নে ভুল থাকলে সেটি ডিবাগ করা কঠিন হতে পারে।
Java তে Regex একটি অত্যন্ত শক্তিশালী টুল যা স্ট্রিং ম্যানিপুলেশন, ভ্যালিডেশন, এবং প্যাটার্ন ম্যাচিংয়ের জন্য ব্যবহৃত হয়। এটি বিভিন্ন ধরনের ডাটা ফরম্যাট যাচাই, স্ট্রিং পরিবর্তন এবং টেক্সট প্রসেসিংয়ের জন্য অপরিহার্য।
Read more