Java রেগুলার এক্সপ্রেশন (Regex) প্যাটার্নে \b এবং \B শব্দের সীমানা (word boundaries) নির্ধারণের জন্য ব্যবহৃত হয়। এগুলি সাধারণত Word Boundaries সংক্রান্ত কার্যাবলি যেমন শব্দের শুরু এবং শেষ চিহ্নিত করার জন্য ব্যবহৃত হয়।
১. \b (Word Boundary):
\b একটি শব্দ সীমানা (word boundary) নির্ধারণ করে, যা শব্দের শুরু বা শেষকে চিহ্নিত করে। এটি একটি পজিটিভ অ্যাডভান্স মেটা ক্যারেক্টার যা শব্দের সীমারেখা চিহ্নিত করে। এটি এমন একটি অবস্থান যেখানে একটি শব্দ (word) এবং একটি অক্ষরের মধ্যে পার্থক্য থাকে।
- Word Character: এটি আলফানিউমেরিক (a-z, A-Z, 0-9) এবং আন্ডারস্কোর (_) দ্বারা গঠিত।
- Non-word Character: এটি এমন চরিত্র যা \w থেকে আলাদা, যেমন স্পেস, পংক্তি বিরতি, সেমিকোলন ইত্যাদি।
\b এর ব্যবহার:
\bশব্দের শুরু বা শেষের অবস্থান চিহ্নিত করতে ব্যবহৃত হয়, এবং এটি শব্দের মধ্যে সীমানা নির্ধারণ করে।
উদাহরণ:
import java.util.regex.*;
public class WordBoundaryExample {
public static void main(String[] args) {
// প্যাটার্ন তৈরি করা
Pattern pattern = Pattern.compile("\\bjava\\b");
// Matcher তৈরি করা
Matcher matcher = pattern.matcher("java is a programming language. Java is also popular.");
// find() মেথড ব্যবহার করে প্যাটার্ন খোঁজা
while (matcher.find()) {
System.out.println("Found match: " + matcher.group());
}
}
}
Output:
Found match: java
ব্যাখ্যা:
\\bjava\\bপ্যাটার্নটিjavaশব্দটি শুধুমাত্র যখন সীমানায় থাকে তখনই ম্যাচ করবে। এটি শুধুমাত্র সেইjavaশব্দগুলোর জন্য মিলে, যেগুলি অন্য কোনো অক্ষর দ্বারা আবৃত নয়। অর্থাৎJavaবাjava.এর মধ্যে সীমানা ছাড়াও, এটা "java" কে মেলাতে সক্ষম হয়।\bশব্দের সীমানা চিহ্নিত করতে সহায়তা করে, তাই এটি একটি নির্দিষ্ট শব্দের শুরু এবং শেষের মধ্যে সীমানা নির্ধারণ করে।
২. \B (Non-word Boundary):
\B একটি নেগেটিভ word boundary নির্ধারণ করে, যা শব্দের সীমানা ছাড়া অন্য কোনো অবস্থান চিহ্নিত করে। এটি শব্দের মধ্যে যেখানে \b মেলে না, সেখানে মেলে। এটি এমন কোনো অবস্থান চিহ্নিত করে যেখানে শব্দ এবং অক্ষরের মধ্যে কোনও সীমানা নেই।
\Bশব্দের শুরু এবং শেষের বাইরে, যেখানে শব্দের সীমানা নেই, সেখানে মেলে।
\B এর ব্যবহার:
\Bশব্দের সীমানা ছাড়া অবস্থান চিহ্নিত করে, যেমন শব্দের মধ্যে কোনও সীমারেখা নেই।
উদাহরণ:
import java.util.regex.*;
public class NonWordBoundaryExample {
public static void main(String[] args) {
// প্যাটার্ন তৈরি করা
Pattern pattern = Pattern.compile("\\Bjava\\B");
// Matcher তৈরি করা
Matcher matcher = pattern.matcher("java is a programming language. Java is also popular.");
// find() মেথড ব্যবহার করে প্যাটার্ন খোঁজা
while (matcher.find()) {
System.out.println("Found match: " + matcher.group());
}
}
}
Output:
Found match: java
ব্যাখ্যা:
\\Bjava\\Bপ্যাটার্নটি শুধুমাত্রjavaশব্দটিকে এমন অবস্থানে মেলে যখন শব্দের সীমানা ছাড়া অন্য অবস্থানে থাকে। তবে এখানেjavaএকটি মেলানো শব্দ হিসেবে হবে, কিন্তু যদি কোনও সীমানা থাকে (যেমন স্পেস বা পাংচুয়েশন), তবে এটি মেলবে না।\Bশুধুমাত্র শব্দের সীমানা ছাড়ানো অবস্থানকে চিহ্নিত করে, যেখানে অক্ষরের মধ্যে সীমানা নেই।
\b এবং \B এর তুলনা:
| মেটা ক্যারেক্টার | বর্ণনা | উদাহরণ |
|---|---|---|
\b | শব্দের সীমানা চিহ্নিত করে (word boundary) | "\\bjava\\b" — যেখানে java শব্দটি অন্য শব্দের সাথে একত্রিত নয়। |
\B | শব্দের সীমানার বাইরে অবস্থান চিহ্নিত করে (non-word boundary) | "\\Bjava\\B" — যেখানে java শব্দের সীমানা ছাড়াই থাকবে। |
প্রয়োগ উদাহরণ:
\b:- প্যাটার্নে
\bjava\bব্যবহার করলে এটি স্ট্রিংয়ের মধ্যে শুধুমাত্রjavaশব্দটি খুঁজে বের করবে, এবং অন্য কোনো অক্ষরের সাথে মিলবে না (যেমন,Java123বাjava!এর সাথে নয়)।
- প্যাটার্নে
\B:\Bjava\Bব্যবহার করলে এটি স্ট্রিংয়ে এমনjavaখুঁজে পাবে যা কোনো শব্দ সীমানায় না থাকে, যেমনxjava123বা123java।
\bএবং\Bরেগুলার এক্সপ্রেশন প্যাটার্নের শব্দ সীমানা নির্ধারণের জন্য ব্যবহৃত হয়।\bশব্দের শুরু বা শেষ চিহ্নিত করে, যেখানে শব্দের সীমানা রয়েছে।\Bশব্দ সীমানা ছাড়া অন্য কোনো অবস্থান চিহ্নিত করে, যেখানে শব্দের সীমানা নেই।\bএবং\Bরেগুলার এক্সপ্রেশনের মধ্যে পার্থক্য বোঝা খুবই গুরুত্বপূর্ণ যখন আপনি বিশেষভাবে শব্দের সীমারেখায় বা বাইরে খোঁজ করতে চান।
Read more