RegExp-এ anchors এবং boundaries প্যাটার্নের বিশেষ অংশ, যা স্ট্রিংয়ের নির্দিষ্ট অবস্থান, যেমন শুরু, শেষ অথবা কোনো সীমান্ত (boundary) চিহ্নিত করতে ব্যবহৃত হয়। এগুলি স্ট্রিংয়ের মধ্যে একটি নির্দিষ্ট জায়গায় প্যাটার্নের মিল খুঁজে পেতে সহায়ক।
Anchors
Anchors হল RegExp এর এমন মেটাচারিত্র যা স্ট্রিংয়ের নির্দিষ্ট অবস্থান নির্দেশ করে, যেমন শুরু অথবা শেষ।
^ (শুরু)
^ প্যাটার্নটি স্ট্রিংয়ের শুরুতে একটি মিল খুঁজে বের করতে ব্যবহৃত হয়। এটি একটি anchor হিসেবে কাজ করে, যা শুধুমাত্র স্ট্রিংয়ের প্রথম অক্ষরের সাথে মিল খুঁজে পায়।
উদাহরণ:
let regex = /^hello/;
let str = "hello world";
console.log(regex.test(str)); // true
এখানে, ^hello প্যাটার্নটি স্ট্রিংয়ের শুরুতে "hello" খুঁজে পাচ্ছে।
$ (শেষ)
$ প্যাটার্নটি স্ট্রিংয়ের শেষে একটি মিল খুঁজে বের করতে ব্যবহৃত হয়। এটি স্ট্রিংয়ের শেষ অক্ষরের সাথে মিল খুঁজে পেতে সহায়তা করে।
উদাহরণ:
let regex = /world$/;
let str = "hello world";
console.log(regex.test(str)); // true
এখানে, world$ প্যাটার্নটি স্ট্রিংয়ের শেষের দিকে "world" খুঁজে পাচ্ছে।
Boundaries
Boundaries হল RegExp এর এমন মেটাচারিত্র, যা স্ট্রিংয়ের মধ্যে কোনো সীমা বা সীমানা নির্দেশ করে, যেমন শব্দের শুরু বা শেষ। এগুলি শব্দের সীমানার মধ্যে মিল খুঁজে পেতে ব্যবহৃত হয়।
\b (শব্দ সীমা)
\b মেটাচারিত্রটি একটি শব্দ সীমা নির্দেশ করে। এটি এমন স্থানে মেলে, যেখানে একটি শব্দ শেষ হয় এবং অন্য শব্দ শুরু হয়।
উদাহরণ:
let regex = /\bcat\b/;
let str = "The cat is cute.";
console.log(regex.test(str)); // true
এখানে, \bcat\b প্যাটার্নটি "cat" শব্দের সীমানায় মিল পাবে, কারণ এটি শব্দের শুরু এবং শেষে সীমা নির্দেশ করছে।
\B (অশব্দ সীমা)
\B মেটাচারিত্রটি একটি অশব্দ সীমা নির্দেশ করে। এটি এমন স্থানে মেলে, যেখানে শব্দের শুরু বা শেষ নেই, অর্থাৎ যেখানে একটি শব্দের মধ্যে অন্য একটি শব্দ শুরু হচ্ছে।
উদাহরণ:
let regex = /c\Bat/;
let str = "cat";
console.log(regex.test(str)); // true
এখানে, c\Bat প্যাটার্নটি "cat" শব্দের মধ্যে "c" এবং "at" এর মধ্যে সীমা ছাড়াই মিল খুঁজে পায়।
সারাংশ
RegExp-এ anchors যেমন ^ (শুরু) এবং $ (শেষ) স্ট্রিংয়ের নির্দিষ্ট অবস্থান নির্দেশ করে। অন্যদিকে boundaries যেমন \b (শব্দ সীমা) এবং \B (অশব্দ সীমা) শব্দের সীমানা চিহ্নিত করতে ব্যবহৃত হয়। এগুলি RegExp এর কার্যকারিতা বাড়াতে এবং স্ট্রিংয়ের নির্দিষ্ট অংশে মিল খুঁজে পেতে গুরুত্বপূর্ণ ভূমিকা পালন করে।
JavaScript এর RegExp-এ ^ (Caret) মেটাচরিত্রটি স্ট্রিংয়ের শুরুতে একটি প্যাটার্ন খুঁজে বের করার জন্য ব্যবহৃত হয়। এটি কোনো স্ট্রিংয়ের শুরুর দিকে নির্দিষ্ট শব্দ বা চরিত্র খুঁজে পেতে বিশেষভাবে উপযোগী।
^ (Caret) এর ব্যবহার
^ মেটাচরিত্রটি ব্যবহার করার মাধ্যমে আপনি RegExp কে নির্দেশ দিতে পারেন যে, এটি শুধু স্ট্রিংয়ের শুরুতে মিলের চেষ্টা করবে। অর্থাৎ, এটি স্ট্রিংয়ের মধ্যে কোথাও একটি শব্দ বা চরিত্রের উপস্থিতি পরীক্ষা করবে না, বরং শুধুমাত্র স্ট্রিংয়ের প্রথম অংশের মধ্যে মিল খুঁজবে।
সিনট্যাক্স:
let regex = /^pattern/;
এখানে, ^pattern প্যাটার্নটি শুধু সেই স্ট্রিংয়ের সাথে মিলবে যেগুলির শুরুতে "pattern" শব্দটি থাকবে।
উদাহরণ
উদাহরণ ১: স্ট্রিংয়ের শুরুতে "hello" খুঁজে বের করা
let regex = /^hello/;
let str = "hello world";
console.log(regex.test(str)); // true
এখানে, ^hello প্যাটার্নটি স্ট্রিং hello world এর শুরুতে "hello" খুঁজে পাচ্ছে, তাই এটি true রিটার্ন করবে।
উদাহরণ ২: স্ট্রিংয়ের শুরুতে "world" খুঁজে না পাওয়া
let regex = /^world/;
let str = "hello world";
console.log(regex.test(str)); // false
এখানে, ^world প্যাটার্নটি স্ট্রিং hello world এর শুরুতে "world" খুঁজে পায় না, তাই এটি false রিটার্ন করবে।
^ (Caret) এর সীমাবদ্ধতা
^ মেটাচরিত্রটি শুধুমাত্র স্ট্রিংয়ের প্রথমে মিল খুঁজবে। এটি স্ট্রিংয়ের অন্য কোনো অংশে মিল খুঁজবে না। উদাহরণস্বরূপ:
let regex = /^hello/;
let str = "this is hello";
console.log(regex.test(str)); // false
এখানে, ^hello প্যাটার্নটি "this is hello" স্ট্রিংয়ের প্রথমে "hello" খুঁজে পায় না, কারণ "hello" স্ট্রিংয়ের শেষে রয়েছে এবং এটি স্ট্রিংয়ের প্রথমে নেই।
^ (Caret) এর সাথে অন্যান্য প্যাটার্নের সংমিশ্রণ
^ মেটাচারিত্রটি অন্যান্য প্যাটার্নের সাথে মিলে আরও শক্তিশালী এবং নমনীয় প্যাটার্ন তৈরি করতে ব্যবহৃত হতে পারে। উদাহরণস্বরূপ, যদি আপনি কোনো স্ট্রিংয়ের প্রথমে একটি নির্দিষ্ট অক্ষর বা সংখ্যা খুঁজে পেতে চান:
let regex = /^[0-9]/;
let str = "123abc";
console.log(regex.test(str)); // true
এখানে, ^[0-9] প্যাটার্নটি স্ট্রিংয়ের শুরুতে কোনো সংখ্যা (0-9) খুঁজে পাচ্ছে, তাই এটি true রিটার্ন করবে।
^ (Caret) এবং অন্যান্য ফ্ল্যাগ
^ মেটাচারিত্রটি মূলত স্ট্রিংয়ের শুরুতে মিল খুঁজে থাকে, এবং এটি ফ্ল্যাগস-এর সাথে বিশেষভাবে কার্যকর হতে পারে, যেমন m (multi-line) ফ্ল্যাগ। m ফ্ল্যাগের সঙ্গে ব্যবহৃত হলে, ^ প্যাটার্নটি প্রতিটি লাইনের শুরুতে মিল খুঁজে পাবে।
উদাহরণ:
let regex = /^hello/m;
let str = "hello world\nhello again";
console.log(regex.test(str)); // true
এখানে, ^hello প্যাটার্নটি দুটি লাইনের মধ্যে "hello" খুঁজে পাচ্ছে, কারণ m ফ্ল্যাগটি প্রতিটি লাইন এর শুরুতে মিল খুঁজতে সাহায্য করছে।
সারাংশ
^ (Caret) মেটাচরিত্রটি স্ট্রিংয়ের শুরুতে নির্দিষ্ট প্যাটার্ন খুঁজে বের করার জন্য ব্যবহৃত হয়। এটি একটি শক্তিশালী উপায় যাতে আপনি স্ট্রিংয়ের প্রথম অংশে কোনো শব্দ বা চরিত্রের উপস্থিতি যাচাই করতে পারেন। এটি স্ট্রিংয়ের মাঝখানে বা শেষে কোনো মিল খুঁজে পায় না, তবে m (multi-line) ফ্ল্যাগ ব্যবহার করলে এটি প্রতিটি লাইনের প্রথমে মিল খুঁজে পায়।
RegExp-এ $ (ডল্যার সাইন) মেটাচরিত্রটি স্ট্রিংয়ের শেষে একটি প্যাটার্ন খুঁজে বের করতে ব্যবহৃত হয়। এটি শুধুমাত্র স্ট্রিংয়ের শেষ অংশে মিল পাওয়ার জন্য ব্যবহৃত হয়, অর্থাৎ স্ট্রিংয়ের শেষে যা থাকে তার সাথে মেলে।
$ (ডল্যার সাইন) এর ব্যবহার
ডল্যার সাইন ($) মেটাচারিত্রটি স্ট্রিংয়ের শেষে নির্দিষ্ট একটি প্যাটার্ন খুঁজে বের করার জন্য ব্যবহৃত হয়। এটি সাধারণত স্ট্রিংয়ের অন্তিম অংশের সাথে মেলাতে ব্যবহৃত হয়, যেমন একটি নির্দিষ্ট শব্দ বা ক্যারেক্টার।
সিনট্যাক্স:
let regex = /pattern$/;
এখানে, pattern$ প্যাটার্নটি স্ট্রিংয়ের শেষে "pattern" খুঁজে বের করবে।
$ (ডল্যার সাইন) এর উদাহরণ
যেমন, যদি আপনি এমন একটি স্ট্রিং খুঁজতে চান যা "world" শব্দ দিয়ে শেষ হয়, তাহলে আপনি নিচের মতো প্যাটার্ন ব্যবহার করতে পারেন:
উদাহরণ:
let regex = /world$/;
let str = "hello world";
console.log(regex.test(str)); // true
এখানে, world$ প্যাটার্নটি স্ট্রিং hello world এর শেষের দিকে "world" শব্দটি খুঁজে পাচ্ছে, তাই এটি true রিটার্ন করবে।
$ (ডল্যার সাইন) ব্যবহার করে ভুল প্যাটার্নের খোঁজ
যদি আপনি এমন একটি স্ট্রিং খুঁজতে চান যা "world" দিয়ে শেষ না হয়, তাহলে আপনি $ প্যাটার্ন ব্যবহার করে নিশ্চিত করতে পারেন।
উদাহরণ:
let regex = /world$/;
let str = "world hello";
console.log(regex.test(str)); // false
এখানে, world$ প্যাটার্নটি স্ট্রিং world hello এর শেষে "world" খুঁজে পায় না, কারণ স্ট্রিংয়ের শেষের অংশে "hello" রয়েছে। ফলে এটি false রিটার্ন করবে।
$ (ডল্যার সাইন) এবং অন্যান্য মেটাচারিত্রের সংমিশ্রণ
আপনি যদি একটি প্যাটার্ন তৈরি করতে চান যা স্ট্রিংয়ের শেষে কিছু নির্দিষ্ট শর্ত মিলিয়ে খুঁজে, তবে ডল্যার সাইন ($) এর সাথে অন্যান্য মেটাচারিত্র ব্যবহার করতে পারেন।
উদাহরণ:
let regex = /\d+$/;
let str = "hello 12345";
console.log(regex.test(str)); // true
এখানে, \d+$ প্যাটার্নটি স্ট্রিংয়ের শেষে যে কোনো এক বা একাধিক ডিজিট (সংখ্যা) খুঁজে পায়, যেমন 12345।
সারাংশ
$ (ডল্যার সাইন) মেটাচরিত্রটি স্ট্রিংয়ের শেষে নির্দিষ্ট একটি প্যাটার্ন খুঁজে বের করতে ব্যবহৃত হয়। এটি স্ট্রিংয়ের শেষের দিকে থাকা কোনো শব্দ, সংখ্যা বা চরিত্রের সাথে মেলে। এটি ব্যবহার করে আপনি নিশ্চিত করতে পারেন যে প্যাটার্নটি স্ট্রিংয়ের শেষে উপস্থিত।
RegExp-এ word boundaries এবং non-word boundaries এমন বিশেষ মেটাচরিত্র যা একটি শব্দের সীমানা চিহ্নিত করতে ব্যবহৃত হয়। এটি স্ট্রিংয়ের মধ্যে নির্দিষ্ট অবস্থান নির্ধারণ করতে সাহায্য করে, যেখানে কোনো শব্দের শুরু বা শেষ হতে পারে।
Word Boundary (\b)
\b হল একটি বিশেষ মেটাচরিত্র যা শব্দের সীমানা নির্দেশ করে। এটি কোনো শব্দের প্রথম বা শেষ অংশে মেলে, যেখানে একটি শব্দ (word character) যেমন ইংরেজি অক্ষর (a-z, A-Z), সংখ্যা (0-9), অথবা আন্ডারস্কোর (_) থাকে এবং তার আশেপাশে অন্য কোনো চরিত্র থাকে যা শব্দের অংশ নয় (non-word character)।
Word boundary সাধারণত শব্দের শেষ বা শুরুতে ব্যবহৃত হয়। এর মাধ্যমে আপনি নির্দিষ্ট একটি শব্দ বা অংশকে তার সীমানা থেকে আলাদা করে খুঁজে পেতে পারেন।
উদাহরণ:
let regex = /\bcat\b/;
let str = "The cat is on the mat.";
console.log(regex.test(str)); // true
এখানে, \bcat\b প্যাটার্নটি "cat" শব্দটি ঠিক শব্দের সীমানায় খুঁজে পাবে, অর্থাৎ এটি এমন জায়গায় মিলবে যেখানে "cat" শব্দটি অন্য কোনো অক্ষর বা চিহ্ন দিয়ে ঘেরা থাকবে। যেমন "The cat is on the mat." স্ট্রিংয়ে এটি মেলে।
Non-word Boundary (\B)
\B হল একটি বিপরীত মেটাচরিত্র যা non-word boundary নির্দেশ করে। এটি তখন ব্যবহৃত হয় যখন আপনি শব্দের সীমানার বাইরে কোনো জায়গায় মেলা খুঁজতে চান। অর্থাৎ, এটি কোনো স্থানকে চিহ্নিত করবে যেখানে একটি শব্দের সীমা নেই, বা সেখানে কোনো শব্দ শুরু বা শেষ হবে না।
Non-word boundary মেটাচারিত্রটি তখন কাজ করবে যখন আপনি নিশ্চিত হতে চান যে একটি নির্দিষ্ট শব্দ বা অংশ কোনো শব্দের সীমানায় অবস্থান করছে না।
উদাহরণ:
let regex = /cat\B/;
let str = "The caterpillar is crawling.";
console.log(regex.test(str)); // true
এখানে, cat\B প্যাটার্নটি "cat" শব্দের পরে কোনো শব্দের সীমানায় না অবস্থান করে এমন মিল খুঁজে পাবে। "caterpillar" শব্দের মধ্যে "cat" অংশটি মিলছে, কারণ এটি কোনো শব্দের সীমানায় নয়, বরং শব্দের ভিতরে রয়েছে।
\b এবং \B এর মধ্যে পার্থক্য
- \b (Word boundary): এটি শব্দের প্রথম বা শেষ স্থানে মেলে। উদাহরণস্বরূপ, "cat" শব্দটি "dog" থেকে আলাদা হতে পারে যদি "dog" বা অন্য কোনো non-word character আগে বা পরে থাকে।
- \B (Non-word boundary): এটি শব্দের সীমানার বাইরে মেলে, অর্থাৎ "cat" শব্দটি কোনো বড় শব্দের অংশ হিসেবে থাকলে এটি মিলবে।
উদাহরণ:
let regex1 = /\bcat\b/;
let regex2 = /\Bcat\B/;
let str1 = "The cat is on the mat.";
let str2 = "The caterpillar is crawling.";
console.log(regex1.test(str1)); // true
console.log(regex2.test(str2)); // true
এখানে:
\bcat\bপ্যাটার্নটি "cat" শব্দটি আলাদা হয়ে "The cat is on the mat." স্ট্রিংয়ের মধ্যে খুঁজে পায়।\Bcat\Bপ্যাটার্নটি "cat" শব্দটির সীমানার বাইরে "caterpillar" শব্দের মধ্যে খুঁজে পায়।
সারাংশ
JavaScript RegExp-এ \b (word boundary) এবং \B (non-word boundary) মেটাচারিত্র দুটি স্ট্রিংয়ের মধ্যে শব্দের সীমানা চিহ্নিত করতে ব্যবহৃত হয়।
- \b শব্দের সীমানায় মেলে (যেমন একটি শব্দের শুরু বা শেষ)।
- \B শব্দের সীমানার বাইরে মেলে (যেখানে কোনো শব্দের সীমানা নেই)।
এই দুটি মেটাচারিত্র শব্দের মধ্যে বা তার আশেপাশে সঠিক মিল খুঁজে পেতে সহায়তা করে।
Read more