Java Reflection Package (java.lang.reflect) এবং Regular Expressions (Regex) এর মধ্যে কিছুটা বিভ্রান্তি হতে পারে, তবে Literal Characters এবং Meta Characters মূলত Regular Expressions-এর (Regex) ধারণা। এই ধারণাগুলি জাভাতে স্ট্রিং প্যাটার্ন ম্যাচিংয়ের জন্য ব্যবহৃত হয়। আসুন, Literal Characters এবং Meta Characters এর ধারণা স্পষ্টভাবে আলোচনা করি:
Literal Characters এবং Meta Characters এর মধ্যে পার্থক্য
Literal Characters (লিটারাল ক্যারেক্টার):
- লিটারাল ক্যারেক্টার হলো সেই ক্যারেক্টার বা অক্ষর, যেগুলি সরাসরি ব্যবহৃত হয় এবং কোনো বিশেষ অর্থ প্রদান করে না। এগুলি সাধারণ অক্ষর, সংখ্যা বা প্রতীক হতে পারে যা রেগুলার এক্সপ্রেশন (Regex) এর অংশ হিসেবে ব্যবহার করা হয়।
উদাহরণ:
"a","1","b","%"— এগুলি লিটারাল ক্যারেক্টার, কারণ এগুলি কোনো বিশেষ Regex অপারেশন প্রকাশ করে না। এগুলি সরাসরি মিল করা হয় এবং কোনো মেটা-অপারেটরের মতো আচরণ করে না।
উদাহরণ হিসেবে, আপনি যদি
"apple"শব্দটি ম্যাচ করতে চান, তবে"apple"একটি লিটারাল ক্যারেক্টার প্যাটার্ন হবে।Meta Characters (মেটা ক্যারেক্টার):
- মেটা ক্যারেক্টারগুলি এমন বিশেষ অক্ষর যা Regex-এ একটি বিশেষ ফাংশন বা বৈশিষ্ট্য নির্দেশ করে। এগুলি প্যাটার্ন ম্যাচিং বা স্ট্রিং সাপোর্ট এবং অন্যান্য কাজ করার জন্য ব্যবহার করা হয়। মেটা ক্যারেক্টারগুলি রেগুলার এক্সপ্রেশনকে শক্তিশালী করে তোলে, কারণ তারা স্ট্রিংয়ের বিভিন্ন ধরণের ম্যাচিং অপারেশন সহজ করে তোলে।
উদাহরণ:
.(ডট): কোনো একক ক্যারেক্টারকে ম্যাচ করবে।^: স্ট্রিংয়ের শুরু।$: স্ট্রিংয়ের শেষ।[]: একটি ক্যারেক্টার ক্লাস, যেখানে একাধিক ক্যারেক্টার বা ক্যারেক্টারের যেকোনো একটি ম্যাচ হবে।*: শূন্য বা একাধিক পুনরাবৃত্তি।+: এক বা একাধিক পুনরাবৃত্তি।?: শূন্য বা একবার।|: OR অপারেটর।
Literal Characters উদাহরণ:
এটি স্ট্রিংয়ের মধ্যে সেই অক্ষরের সাথে সরাসরি মিল করবে যা আপনি প্যাটার্ন হিসেবে ব্যবহার করেছেন:
import java.util.regex.*;
public class LiteralCharacterExample {
public static void main(String[] args) {
String text = "apple";
// Create pattern to match the literal word "apple"
Pattern pattern = Pattern.compile("apple");
Matcher matcher = pattern.matcher(text);
// If the literal word "apple" matches, it will return true
if (matcher.find()) {
System.out.println("Match found: " + matcher.group());
}
}
}
Output:
Match found: apple
এখানে "apple" একটি লিটারাল প্যাটার্ন হিসেবে ব্যবহৃত হয়েছে, যা স্ট্রিংয়ের মধ্যে সঠিকভাবে মিলে গেছে।
Meta Characters উদাহরণ:
এগুলো রেগুলার এক্সপ্রেশন প্যাটার্নে বিশেষ কাজ করে, যেমন প্যাটার্নের মধ্যে স্থানচ্যুতি, মিল খোঁজা ইত্যাদি।
import java.util.regex.*;
public class MetaCharacterExample {
public static void main(String[] args) {
String text = "apple 123";
// Create pattern to match one or more digits using "+"
Pattern pattern = Pattern.compile("\\d+"); // \d+ matches one or more digits
Matcher matcher = pattern.matcher(text);
// Find and print all the matches for digits
while (matcher.find()) {
System.out.println("Match found: " + matcher.group());
}
}
}
Output:
Match found: 123
এখানে \\d+ একটি মেটা ক্যারেক্টার প্যাটার্ন, যা এক বা একাধিক ডিজিট মেলার জন্য ব্যবহৃত হয়েছে। এটি "123" কে ম্যাচ করেছে, কারণ \\d+ প্যাটার্নটি ডিজিটের একটি বা একাধিক পুনরাবৃত্তি ম্যাচ করবে।
মেটা ক্যারেক্টারের তালিকা:
.(ডট): যেকোনো একক ক্যারেক্টার। উদাহরণ:a.b- এটি"acb","abb"ইত্যাদির সাথে মিলে যাবে।^(Caret): স্ট্রিংয়ের শুরু। উদাহরণ:^a- এটি শুধুমাত্র সেসব স্ট্রিংয়ের সাথে মেলে যেগুলিaদিয়ে শুরু হয়।$(Dollar Sign): স্ট্রিংয়ের শেষ। উদাহরণ:a$- এটি এমন স্ট্রিংয়ের সাথে মিলে যেখানেaশেষ অক্ষর।[](Character Classes): একাধিক ক্যারেক্টার। উদাহরণ:[abc]- এটিa,b, অথবাcযে কোন একটির সাথে মেলে।*(Asterisk): শূন্য বা একাধিক পুনরাবৃত্তি। উদাহরণ:a*- এটি"","a","aa"ইত্যাদির সাথে মেলে।+(Plus Sign): এক বা একাধিক পুনরাবৃত্তি। উদাহরণ:a+- এটি"a","aa","aaa"ইত্যাদির সাথে মেলে।?(Question Mark): শূন্য বা একবার। উদাহরণ:a?- এটি"a"বা""(শূন্য) এর সাথে মেলে।{n,m}: নির্দিষ্ট সংখ্যক পুনরাবৃত্তি। উদাহরণ:a{2,4}- এটি"aa","aaa","aaaa"এর সাথে মেলে।\d: একটি ডিজিট (0-9)। উদাহরণ:\d{2}- এটি12,99ইত্যাদি ২ ডিজিট সংখ্যা ম্যাচ করবে।\w: একটি শব্দের অক্ষর (অক্ষর, ডিজিট, আন্ডারস্কোর)। উদাহরণ:\w+- এটিabc,123,_underscoreইত্যাদি ম্যাচ করবে।\s: হোয়াইটস্পেস (স্পেস, ট্যাব, নিউলাইন ইত্যাদি)। উদাহরণ:\s+- এটি এক বা একাধিক হোয়াইটস্পেসের সাথে মিলবে।|(OR): অথবা অপারেটর। উদাহরণ:a|b- এটিaঅথবাbএর সাথে মিলবে।
- Literal characters হলো সাধারণ অক্ষর যা কোনো বিশেষ অর্থ বহন করে না, এবং সরাসরি স্ট্রিং প্যাটার্ন হিসেবে ব্যবহার হয়।
- Meta characters হলো বিশেষ চিহ্ন যা রেগুলার এক্সপ্রেশনগুলোকে শক্তিশালী করে তোলে, যেমন
*,+,[],|ইত্যাদি, যা স্ট্রিং প্যাটার্নে বিভিন্ন ধরনের ম্যাচিং অপারেশন করতে সাহায্য করে।
যখন আপনি স্ট্রিং ম্যানিপুলেশন করতে চান, তখন রেগুলার এক্সপ্রেশন খুবই কার্যকরী হয়, তবে মেটা ক্যারেক্টারগুলি কেবলমাত্র প্যাটার্ন মেলানোর জন্য ব্যবহার করা হয়, এবং লিটারাল ক্যারেক্টারগুলি স্ট্রিংয়ের সরাসরি অংশ হিসেবে ব্যবহৃত হয়।
Read more