Java Reflection প্যাকেজের সাথে Regular Expressions বা Regex এর ব্যবহার পৃথক বিষয় হলেও, আপনি যদি java.lang.reflect প্যাকেজ ব্যবহার করেন, তবে আপনি Regular Expressions (Regex) এর মধ্যে Literal Characters এবং Meta Characters এর ধারণা সম্পর্কে জানতে পারবেন।
এখানে আমরা Character Classes এর ধারণা নিয়ে আলোচনা করবো, যেগুলি regex এর মধ্যে ব্যবহৃত হয়। এই Character Classes ব্যবহৃত হয় স্ট্রিং প্যাটার্ন খুঁজে বের করার জন্য।
Character Classes in Regular Expressions:
Character Classes হলো এমন প্যাটার্ন যা আপনাকে একাধিক চরিত্রের মধ্যে থেকে একটি চরিত্র নির্বাচন করতে দেয়। এই ক্লাসগুলি সাধারণত ব্র্যাকেট [ ] এর মধ্যে লেখা হয়। Character Classes স্ট্রিং ম্যানিপুলেশন এবং প্যাটার্ন ম্যাচিংয়ের জন্য খুবই শক্তিশালী এবং বহুল ব্যবহৃত।
1. [abc] (Character Class):
এই ক্লাসটি একটি প্যাটার্নে a, b, অথবা c-এর যেকোনো একটি চরিত্র মেলাবে।
উদাহরণ:
import java.util.regex.*;
public class RegexExample {
public static void main(String[] args) {
String text = "apple banana cat";
Pattern pattern = Pattern.compile("[abc]"); // Match 'a', 'b', or 'c'
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println("Found: " + matcher.group());
}
}
}
আউটপুট:
Found: a
Found: a
Found: b
Found: a
Found: c
এখানে, [abc] স্ট্রিংয়ের মধ্যে a, b, অথবা c যেকোনো একটি চরিত্র খুঁজে বের করেছে।
2. [^abc] (Negated Character Class):
এটি একটি নেগেটেড চরিত্র ক্লাস, যার মাধ্যমে আপনি এমন প্যাটার্ন মেলাতে পারেন যা a, b, অথবা c ছাড়া অন্য কোনো চরিত্র মেলে।
উদাহরণ:
import java.util.regex.*;
public class RegexExample {
public static void main(String[] args) {
String text = "apple banana cat";
Pattern pattern = Pattern.compile("[^abc]"); // Match any character except 'a', 'b', or 'c'
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println("Found: " + matcher.group());
}
}
}
আউটপুট:
Found: p
Found: l
Found: e
Found: n
Found: n
Found: n
Found: t
এখানে, [^abc] প্যাটার্নটি এমন চরিত্রগুলো মেলাতে ব্যবহার করা হয়েছে যা a, b, বা c নয়।
3. [a-zA-Z] (Character Range Class):
এটি একটি চরিত্র রেঞ্জ ক্লাস, যা ইংরেজি বর্ণমালার সব ছোট এবং বড় হাতের অক্ষরগুলো মেলাতে ব্যবহৃত হয়।
উদাহরণ:
import java.util.regex.*;
public class RegexExample {
public static void main(String[] args) {
String text = "apple Banana CAT 123";
Pattern pattern = Pattern.compile("[a-zA-Z]"); // Match any letter (lowercase or uppercase)
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println("Found: " + matcher.group());
}
}
}
আউটপুট:
Found: a
Found: p
Found: p
Found: l
Found: e
Found: B
Found: a
Found: n
Found: a
Found: n
Found: a
Found: C
Found: A
Found: T
এখানে, [a-zA-Z] প্যাটার্নটি সমস্ত ছোট এবং বড় হাতের অক্ষরগুলো মেলাতে ব্যবহার করা হয়েছে।
Additional Notes on Character Classes:
- Character Ranges:
[a-z]: এটি সব ছোট হাতের ইংরেজি অক্ষরকে মেলাবে (যেমনa,b, ...,z)।[A-Z]: এটি সব বড় হাতের ইংরেজি অক্ষরকে মেলাবে (যেমনA,B, ...,Z)।[0-9]: এটি সব ডিজিটকে মেলাবে (যেমন0,1, ...,9)।
- Combining Ranges:
[a-zA-Z]: ছোট এবং বড় হাতের অক্ষরের সমস্ত ক্যারেক্টার মেলাতে পারে।[0-9a-fA-F]: এটি হেক্সাডেসিমাল সংখ্যার সব ক্যারেক্টার মেলাতে ব্যবহার হয়।
- Predefined Character Classes:
\d: একটি ডিজিট (0-9)।\D: একটি নন-ডিজিট (0-9 নয়)।\w: একটি শব্দের অক্ষর (অক্ষর, ডিজিট বা আন্ডারস্কোর)।\W: একটি নন-শব্দের অক্ষর (যেমন স্পেস, পাঙ্কচুয়েশন চিহ্ন)।
- Character Classes হল রেগুলার এক্সপ্রেশন (Regex) এর শক্তিশালী বৈশিষ্ট্য যা স্ট্রিংয়ের মধ্যে বিভিন্ন ধরনের অক্ষর বা চরিত্রের গোষ্ঠী খুঁজে বের করার জন্য ব্যবহৃত হয়।
[abc],[^abc], এবং[a-zA-Z]এর মতো প্যাটার্ন ব্যবহার করে আপনি স্ট্রিংয়ের নির্দিষ্ট ধরনের চরিত্র মেলাতে পারেন।- রেগুলার এক্সপ্রেশন ব্যবহারে আপনার স্ট্রিং ম্যাচিং এবং ম্যানিপুলেশন কার্যকর এবং দক্ষ হতে পারে, তবে এটি বুঝে এবং সঠিকভাবে ব্যবহার করতে হবে।
এই ধারণাগুলি ব্যবহার করে আপনি জাভা রেগুলার এক্সপ্রেশন দিয়ে স্ট্রিং ম্যানিপুলেশন কাজগুলো আরও সহজ এবং কার্যকরভাবে করতে পারবেন।
Read more