Java Regex (Regular Expressions)-এ Greedy Quantifiers হল এমন প্যাটার্ন, যা নির্দিষ্ট সংখ্যা বা শর্তের মধ্যে মিল খোঁজার জন্য ব্যবহৃত হয়। গ্রিডি কোয়ানটিফায়ারগুলি প্রাথমিকভাবে স্ট্রিংয়ের মধ্যে এমন সেগমেন্টের জন্য ব্যবহৃত হয়, যেগুলোর পরিমাণ সর্বাধিক হওয়ার চেষ্টা করে। এগুলি মূলত প্যাটার্নের সাথে মেলানোর সময় অধিক সংখ্যক অক্ষর নিয়ে মেলে, যতটা সম্ভব।
Greedy Quantifiers এর মধ্যে কিছু সাধারণ কোয়ানটিফায়ার রয়েছে: *, +, {n}, এবং {n,m}। এই কোয়ানটিফায়ারগুলি এমন ভাবে কাজ করে যাতে তারা যতটুকু সম্ভব ম্যাচ পেতে চেষ্টা করে, এবং এটাই তাদের "গ্রিডি" (greedy) আচরণ।
1. * (Asterisk) - 0 বা তার বেশি পুনরাবৃত্তি:
* কোয়ানটিফায়ারটি নির্দেশ করে যে, যেকোনো চরিত্র বা প্যাটার্ন শূন্য বা তার বেশি বার পুনরাবৃত্তি হতে পারে। অর্থাৎ, এটি zero বা more occurrences মেলে।
উদাহরণ:
import java.util.regex.*;
public class GreedyQuantifierAsteriskExample {
public static void main(String[] args) {
String text = "aaab aaaab";
Pattern pattern = Pattern.compile("a*b");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println("Match found: " + matcher.group());
}
}
}
Output:
Match found: aaab
Match found: aaaab
ব্যাখ্যা:
a*bপ্যাটার্নটিbএর আগে যে কোনো সংখ্যা বা শূন্যaমেলে। এটি প্রথমaaabএবং দ্বিতীয়aaaabম্যাচ করে, কারণa*কোনো সংখ্যকaসহ মেলে।
2. + (Plus) - 1 বা তার বেশি পুনরাবৃত্তি:
+ কোয়ানটিফায়ারটি নির্দেশ করে যে, যেকোনো চরিত্র বা প্যাটার্ন একবার বা তার বেশি বার পুনরাবৃত্তি হতে পারে। অর্থাৎ, এটি one or more occurrences মেলে।
উদাহরণ:
import java.util.regex.*;
public class GreedyQuantifierPlusExample {
public static void main(String[] args) {
String text = "ab aaab aaaab";
Pattern pattern = Pattern.compile("a+b");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println("Match found: " + matcher.group());
}
}
}
Output:
Match found: ab
Match found: aaab
Match found: aaaab
ব্যাখ্যা:
a+bপ্যাটার্নটিbএর আগে এক বা একাধিকaমেলে।ab,aaab, এবংaaaabসবই মেলে, কারণ এখানে এক বা তার বেশিaথাকতে হবে।
3. {n} (Exact n occurrences) - নির্দিষ্ট সংখ্যক পুনরাবৃত্তি:
{n} কোয়ানটিফায়ারটি নির্দেশ করে যে, একটি চরিত্র বা প্যাটার্ন ঠিক n বার পুনরাবৃত্তি হতে হবে। এটি একটি নির্দিষ্ট সংখ্যক বার পুনরাবৃত্তি খুঁজে।
উদাহরণ:
import java.util.regex.*;
public class GreedyQuantifierExactExample {
public static void main(String[] args) {
String text = "aab aaab aaaab";
Pattern pattern = Pattern.compile("a{2}b");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println("Match found: " + matcher.group());
}
}
}
Output:
Match found: aab
ব্যাখ্যা:
a{2}bপ্যাটার্নটি এমন একটি স্ট্রিং খুঁজে যেখানে ঠিক দুইটিaএবং তারপরে একটিbরয়েছে।aabপ্রথম স্ট্রিংটি মেলে, কিন্তুaaabএবংaaaabমেলে না, কারণ এখানেaএর সংখ্যা ২-এর বেশি।
4. {n,m} (Between n and m occurrences) - নির্দিষ্ট সীমার মধ্যে পুনরাবৃত্তি:
{n,m} কোয়ানটিফায়ারটি নির্দেশ করে যে, একটি চরিত্র বা প্যাটার্ন n থেকে m বার পুনরাবৃত্তি হতে পারে। এটি min to max occurrences মেলে।
উদাহরণ:
import java.util.regex.*;
public class GreedyQuantifierRangeExample {
public static void main(String[] args) {
String text = "aab aaab aaaab";
Pattern pattern = Pattern.compile("a{2,3}b");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println("Match found: " + matcher.group());
}
}
}
Output:
Match found: aab
Match found: aaab
ব্যাখ্যা:
a{2,3}bপ্যাটার্নটি খুঁজে যেখানেaএর সংখ্যা ২ থেকে ৩ বার এবং তারপর একটিbথাকবে। এখানেaabএবংaaabমেলে, কিন্তুaaaabমেলে না, কারণ সেখানেaএর সংখ্যা ৩-এর বেশি।
Greedy Quantifiers এর চূড়ান্ত রিভিউ:
| Quantifier | Description | Example Pattern | Matches (for input "aaab aaab aaabb") |
|---|---|---|---|
* | Zero or more occurrences | a*b | aaab, aaab, aaabb |
+ | One or more occurrences | a+b | aaab, aaab, aaabb |
{n} | Exactly n occurrences | a{2}b | aab |
{n,m} | Between n and m occurrences | a{2,3}b | aab, aaab |
- Greedy Quantifiers হল Regex-এর শক্তিশালী উপাদান যা স্ট্রিংয়ের মধ্যে একাধিক ম্যাচ খুঁজে বের করতে সহায়তা করে।
*,+,{n}, এবং{n,m}গ্রিডি কোয়ানটিফায়ারগুলি এমনভাবে কাজ করে যাতে তারা যতটুকু সম্ভব মেলানোর চেষ্টা করে, অর্থাৎ যতটুকু মিল পাওয়া যায়, ততটুকু ধরে রাখতে চেষ্টা করে।- এই কোয়ানটিফায়ারগুলির ব্যবহার স্ট্রিংয়ের সঠিক অংশ খুঁজে বের করতে কার্যকরী এবং শক্তিশালী টুল হিসেবে কাজ করে।
Read more