Grouping এবং Alternation হল RegExp এর দুইটি গুরুত্বপূর্ণ কনসেপ্ট, যা স্ট্রিংয়ের মধ্যে একটি নির্দিষ্ট প্যাটার্ন খুঁজে বের করতে সহায়ক। এই দুটি কৌশল স্ট্রিং ম্যাচিংকে আরও শক্তিশালী এবং নমনীয় করে তোলে।
Grouping
Grouping প্যাটার্নের মাধ্যমে আপনি একটি একক ইউনিট হিসেবে একাধিক চরিত্র বা প্যাটার্নকে গ্রুপ করতে পারেন। গ্রুপিং সাধারনত কোলন ( ) ব্যবহার করে করা হয়। এটি স্ট্রিংয়ের একাধিক অংশকে একটি ইউনিট হিসেবে বিবেচনা করতে সাহায্য করে।
গ্রুপিং ব্যবহার করার মাধ্যমে আপনি কিছু নির্দিষ্ট অংশ একসাথে মিলিয়ে পরীক্ষা করতে পারেন বা পরে সেই গ্রুপের অংশকে আলাদাভাবে রেফারেন্স করতে পারেন।
Grouping এর উদাহরণ
let regex = /(ab)+/;
let str = "ababab";
console.log(regex.test(str)); // true
এখানে, (ab)+ প্যাটার্নটি "ababab" স্ট্রিংয়ের মধ্যে একাধিক বার "ab" মেলাতে সক্ষম হয়েছে।
Grouping এর ব্যবহার
Grouping এ কোলন ( ) চিহ্ন দিয়ে একাধিক অংশকে একত্রে গ্রুপ করা হয়। এই গ্রুপটির মধ্যে কিছু বিশেষ কৌশল প্রয়োগ করা যায় যেমন:
- Quantifiers: যেমন
+,*,{n,m}যা গ্রুপের উপর প্রয়োগ করা হয়। - Backreference: গ্রুপটি পরে পুনরায় রেফারেন্স করতে
\1,\2ইত্যাদি ব্যবহার করা হয়।
উদাহরণ:
let regex = /(abc)+/;
let str = "abcabcabc";
console.log(regex.test(str)); // true
এখানে, (abc)+ প্যাটার্নটি "abcabcabc" স্ট্রিংয়ের মধ্যে একাধিক বার "abc" মিলাচ্ছে।
Alternation
Alternation RegExp প্যাটার্নে একটি OR অপারেশন হিসেবে কাজ করে। এটি | চিহ্ন ব্যবহার করে দুইটি বা তার বেশি প্যাটার্নের মধ্যে কোন একটি মেলাতে সাহায্য করে। অর্থাৎ, আপনি দুটি বিকল্প প্যাটার্নের মধ্যে যেকোনো একটি মিলাতে পারবেন।
এটি OR অপারেটর হিসেবে কাজ করে এবং দুটি বা তার বেশি ভিন্ন ভিন্ন প্যাটার্নের মধ্যে যেকোনো একটি প্যাটার্নের সাথে স্ট্রিং ম্যাচ করবে।
Alternation এর উদাহরণ
let regex = /cat|dog/;
let str = "I have a cat";
console.log(regex.test(str)); // true
এখানে, cat|dog প্যাটার্নটি স্ট্রিং "I have a cat" এর মধ্যে "cat" খুঁজে পাচ্ছে এবং মেলে যাচ্ছে।
Alternation এর ব্যবহার
Alternation এর মাধ্যমে আপনি একাধিক বিকল্প প্যাটার্ন দিয়ে একটি মিল খুঁজে পেতে পারেন। উদাহরণস্বরূপ, আপনি যদি একটি শব্দের মধ্যে "cat" অথবা "dog" খুঁজতে চান, তাহলে | চিহ্ন ব্যবহার করবেন।
উদাহরণ:
let regex = /apple|orange/;
let str = "I like apple";
console.log(regex.test(str)); // true
এখানে, apple|orange প্যাটার্নটি "I like apple" স্ট্রিংয়ের মধ্যে "apple" খুঁজে পাচ্ছে এবং মেলে যাচ্ছে।
Grouping এবং Alternation এর সমন্বয়
Grouping এবং Alternation একসাথে ব্যবহার করে আরও জটিল প্যাটার্ন তৈরি করা যায়। যেমন, যদি আপনি কিছু শব্দের মধ্যে একটি বিশেষ প্যাটার্ন তৈরি করতে চান, তবে আপনি Grouping এবং Alternation ব্যবহার করে এটি সহজে করতে পারবেন।
উদাহরণ:
let regex = /(cat|dog|bird)/;
let str = "I have a dog";
console.log(regex.test(str)); // true
এখানে, (cat|dog|bird) প্যাটার্নটি "I have a dog" স্ট্রিংয়ের মধ্যে "dog" খুঁজে পাচ্ছে এবং মেলে যাচ্ছে।
Backreference
Grouping এর একটি গুরুত্বপূর্ণ ব্যবহার হল Backreference। যখন আপনি একটি গ্রুপ তৈরি করেন, তখন আপনি পরবর্তী সময়ে সেই গ্রুপটি আবার রেফারেন্স করতে পারেন। এটি একটি গ্রুপের পুনরাবৃত্তি অথবা নির্দিষ্ট অংশের মিল খুঁজতে ব্যবহৃত হয়।
Backreference এর জন্য \1, \2 ইত্যাদি ব্যবহার করা হয়, যা গ্রুপের প্যাটার্নকে রেফারেন্স করে।
উদাহরণ:
let regex = /(abc)\1/;
let str = "abcabc";
console.log(regex.test(str)); // true
এখানে, (abc)\1 প্যাটার্নটি "abcabc" স্ট্রিংয়ের মধ্যে প্রথম গ্রুপ (abc) এর সাথে পরবর্তী গ্রুপকে মিলাচ্ছে।
সারাংশ
RegExp-এ Grouping এবং Alternation খুবই শক্তিশালী টুলস। Grouping প্যাটার্নের মধ্যে একাধিক অংশকে একত্রে গ্রুপ করতে সাহায্য করে, এবং Alternation দুটি বা তার বেশি বিকল্প প্যাটার্নের মধ্যে যেকোনো একটি মিলাতে সক্ষম হয়। এই দুটি পদ্ধতির সমন্বয়ে আপনি জটিল প্যাটার্ন তৈরি করে স্ট্রিং ম্যানিপুলেশন করতে পারেন, যা RegExp ব্যবহারে আরও নমনীয়তা এবং কার্যকারিতা বৃদ্ধি করে।
JavaScript এর RegExp এ Parentheses বা গ্রুপিং একটি অত্যন্ত গুরুত্বপূর্ণ বৈশিষ্ট্য, যা স্ট্রিংয়ের অংশগুলোকে একত্রিত করে একটি গ্রুপ হিসেবে কাজ করতে সাহায্য করে। এটি আপনাকে প্যাটার্নের ভেতরে এক বা একাধিক অংশকে একটি ইউনিট হিসেবে ব্যবহার করার সুযোগ দেয়।
গ্রুপিং কী?
Parentheses ( ) ব্যবহার করে আপনি একাধিক চরিত্র বা প্যাটার্নকে একটি গ্রুপে রেখে সেটি একটি একক একক অংশ হিসেবে ট্রিট করতে পারেন। গ্রুপিং করার মাধ্যমে আপনি স্ট্রিংয়ের অংশগুলি একত্রিত করে তাদের উপর বিভিন্ন অপারেশন যেমন মেলানো, রিপ্লেসমেন্ট, বা ক্যাপচার করতে পারবেন।
গ্রুপিং এর সঠিক ব্যবহার
যখন আপনি কিছু অংশকে গ্রুপ করতে চান, তখন সেই অংশটি প্যারেনথেসিস ( ) চিহ্নের মধ্যে রাখতে হবে।
সিনট্যাক্স:
/(pattern)/;
এখানে, (pattern) একটি গ্রুপ হিসাবে কাজ করবে।
উদাহরণ
১. একাধিক চরিত্রকে গ্রুপ করা
ধরা যাক, আপনি "hello" শব্দের প্রথম দুটি অক্ষরকে গ্রুপ করতে চান:
let regex = /(he)llo/;
let str = "hello";
console.log(regex.test(str)); // true
এখানে, (he) গ্রুপটি "hello" শব্দের প্রথম দুটি অক্ষরকে একটি গ্রুপ হিসেবে গ্রুপ করছে। প্যাটার্নের মধ্যে he হওয়া সত্ত্বেও, পুরো স্ট্রিংয়ের সাথে এটি মিলে যাচ্ছে।
২. গ্রুপিং এবং রিপিটেশন
আপনি গ্রুপিং এর সাথে রিপিটেশন মেটাচারিত্র যেমন *, +, অথবা {} ব্যবহার করে কিছু অংশকে একাধিক বার মিলাতে পারেন। যেমন, দুটি অক্ষরকে একাধিক বার মিলানো:
let regex = /(ab)+/;
let str = "ababab";
console.log(regex.test(str)); // true
এখানে, (ab)+ প্যাটার্নটি "ababab" স্ট্রিংয়ের মধ্যে "ab" অংশটি একাধিক বার মিলাচ্ছে। গ্রুপিং এখানে রিপিটেশন সুবিধা প্রদান করছে।
গ্রুপিং এবং ক্যাপচার
গ্রুপিং-এর আরেকটি গুরুত্বপূর্ণ দিক হলো ক্যাপচার। যখন আপনি গ্রুপিং ব্যবহার করেন, তখন ঐ গ্রুপের মেলানো অংশগুলো আলাদাভাবে ক্যাপচার করা যায়। এই ক্যাপচার করা অংশগুলো পরবর্তীতে রেফারেন্স হিসেবে ব্যবহার করা যেতে পারে।
উদাহরণ:
let regex = /(\d{2})-(\d{2})-(\d{4})/;
let str = "25-12-2023";
let result = regex.exec(str);
console.log(result[1]); // 25
console.log(result[2]); // 12
console.log(result[3]); // 2023
এখানে, (\d{2}) প্রথম গ্রুপ, (\d{2}) দ্বিতীয় গ্রুপ এবং (\d{4}) তৃতীয় গ্রুপ হিসেবে কাজ করছে। exec() মেথডের মাধ্যমে আপনি এই গ্রুপগুলোর অংশগুলোকে আলাদাভাবে ক্যাপচার করতে পারেন।
Non-Capturing Groups
কখনো কখনো আপনি গ্রুপিং করতে চাইবেন, কিন্তু সেই গ্রুপের মান ক্যাপচার করতে চান না। এমন অবস্থায় Non-Capturing Group ব্যবহার করা যায়, যেখানে গ্রুপটি প্যাটার্নে অংশ নেয়, কিন্তু ক্যাপচার হয় না।
Non-Capturing Group এর সিনট্যাক্স:
/(?:pattern)/;
উদাহরণ:
let regex = /(?:abc)+/;
let str = "abcabcabc";
console.log(regex.test(str)); // true
এখানে, (?:abc) একটি non-capturing group, যা abc কে গ্রুপ হিসেবে ব্যবহার করে, তবে এটি কোনো ক্যাপচার করা অংশ তৈরি করে না।
গ্রুপিং এবং OR (|)
গ্রুপিং এর সাথে আপনি OR অপারেটর | ব্যবহার করে একাধিক বিকল্পের মধ্যে মিল খুঁজতে পারেন। যেমন:
let regex = /(cat|dog)/;
let str = "I have a cat";
console.log(regex.test(str)); // true
এখানে, (cat|dog) প্যাটার্নটি "cat" বা "dog" এর মধ্যে যেকোনো একটি মেলানোর চেষ্টা করবে।
সারাংশ
Parentheses (()) ব্যবহার করে RegExp এ গ্রুপিং করা যায়, যা একাধিক প্যাটার্নকে একটি ইউনিট হিসেবে ব্যবহার করতে সাহায্য করে। এটি স্ট্রিংয়ের নির্দিষ্ট অংশ আলাদা করে ধরে রাখতে বা ক্যাপচার করতে কাজে লাগে। গ্রুপিং ব্যবহার করে আপনি আরও উন্নত প্যাটার্ন তৈরি করতে পারেন, যেমন রিপিটেশন, ক্যাপচার এবং OR অপারেটরের সাহায্যে বিকল্প মিলানোর সুবিধা। Non-Capturing Groups দিয়ে আপনি গ্রুপিং করতে পারেন কিন্তু ক্যাপচার করতে পারবেন না।
JavaScript এর RegExp এ Alternation মেটাচরিত্র (|) ব্যবহার করে আপনি একটি প্যাটার্নের মধ্যে বিকল্প (OR) শর্ত তৈরি করতে পারেন। অর্থাৎ, আপনি একটি প্যাটার্নের মধ্যে একাধিক বিকল্পের মধ্যে যেকোনো একটি মেলানোর জন্য এটি ব্যবহার করতে পারেন। এটি বিশেষভাবে কার্যকর যখন আপনি চাইছেন যে একটি স্ট্রিংয়ে একাধিক ভিন্ন প্যাটার্নের মধ্যে যেকোনো একটি মিলুক।
Alternation (|) এর কাজ
Alternation বা OR অপারেটর (|) দুটি বা তার বেশি বিকল্প প্যাটার্নের মধ্যে যেকোনো একটি মেলানোর জন্য ব্যবহৃত হয়। এটি নির্দিষ্ট প্যাটার্নের মধ্যে বিকল্পের মতো কাজ করে, যেখানে আপনি একাধিক প্যাটার্ন নির্দিষ্ট করে দিতে পারেন এবং RegExp প্রথম মিল পাওয়া প্যাটার্নটি মেনে চলবে।
উদাহরণ
ধরা যাক, আমরা একটি প্যাটার্ন তৈরি করতে চাই যা স্ট্রিংয়ের মধ্যে "cat" বা "dog" যেকোনো একটি শব্দ খুঁজে বের করবে। এজন্য আমরা cat|dog প্যাটার্ন ব্যবহার করতে পারি।
let regex = /cat|dog/;
let str1 = "I have a cat";
let str2 = "I have a dog";
console.log(regex.test(str1)); // true
console.log(regex.test(str2)); // true
এখানে, cat|dog প্যাটার্নটি স্ট্রিংয়ের মধ্যে "cat" বা "dog" যেকোনো একটি খুঁজে বের করবে। প্রথম স্ট্রিংয়ে এটি "cat" এর সাথে মিলছে এবং দ্বিতীয় স্ট্রিংয়ে "dog" এর সাথে।
Complex Alternatives
আপনি Alternation ব্যবহার করে আরো জটিল বিকল্প প্যাটার্ন তৈরি করতে পারেন। উদাহরণস্বরূপ, যদি আপনি চান যে প্যাটার্নটি "cat", "dog", অথবা "bird" এর মধ্যে যেকোনো একটি শব্দ খুঁজে বের করুক, তাহলে আপনি cat|dog|bird ব্যবহার করতে পারেন।
let regex = /cat|dog|bird/;
let str = "I love my dog";
console.log(regex.test(str)); // true
এখানে, cat|dog|bird প্যাটার্নটি স্ট্রিংয়ের মধ্যে "dog" এর সাথে মিলে যাচ্ছে।
Grouping এবং Alternation
Alternation একত্রে grouping এর সাথে ব্যবহার করে আরো শক্তিশালী এবং সুনির্দিষ্ট প্যাটার্ন তৈরি করা সম্ভব। গ্রুপিং এর মাধ্যমে আপনি কিছু প্যাটার্নকে একটি ইউনিট হিসেবে ব্যবহার করতে পারেন, যাতে বিকল্পগুলি সঠিকভাবে নির্দিষ্ট করা যায়।
যেমন, যদি আপনি চান যে একটি প্যাটার্নে দুটি ভিন্ন বিকল্পের মধ্যে যেকোনো একটি মেলুক, আপনি গ্রুপিং ব্যবহার করতে পারেন:
let regex = /(cat|dog)/;
let str1 = "I have a cat";
let str2 = "I have a dog";
console.log(regex.test(str1)); // true
console.log(regex.test(str2)); // true
এখানে, (cat|dog) গ্রুপিংয়ের মধ্যে | বিকল্প অপারেটর ব্যবহার করা হয়েছে, যা "cat" অথবা "dog" এর মধ্যে যেকোনো একটি মেলাবে।
Alternation ব্যবহার করে ইমেল বা ফোন নম্বর ম্যাচিং
Alternation (|) এর সাহায্যে আপনি বিভিন্ন ধরনের প্যাটার্ন একত্রে ব্যবহার করে ইমেল বা ফোন নম্বরের মতো জটিল স্ট্রিং যাচাই করতে পারেন। উদাহরণস্বরূপ, একটি সিম্পল ইমেল প্যাটার্ন যা দুটি বিকল্পে মেলে:
let regex = /\w+@\w+\.(com|org|net)/;
let str1 = "hello@example.com";
let str2 = "hello@example.net";
let str3 = "hello@example.org";
console.log(regex.test(str1)); // true
console.log(regex.test(str2)); // true
console.log(regex.test(str3)); // true
এখানে, com|org|net বিকল্পগুলো Alternation এর মাধ্যমে ইমেলের ডোমেইন নামের অংশের বিকল্প তৈরি করেছে।
সারাংশ
Alternation বা | মেটাচরিত্রটি RegExp এ বিকল্প প্যাটার্ন তৈরির জন্য ব্যবহৃত হয়। এটি একাধিক প্যাটার্নের মধ্যে যেকোনো একটি মেলাতে সহায়তা করে। cat|dog এর মতো সাধারণ উদাহরণ থেকে শুরু করে গ্রুপিংয়ের সাথে আরো জটিল বিকল্প প্যাটার্ন তৈরি করা সম্ভব। এটি স্ট্রিং যাচাইয়ের জন্য খুবই শক্তিশালী একটি ফিচার, যেটি বিভিন্ন শর্ত একত্রে মেলাতে ব্যবহার করা যায়।
JavaScript এর RegExp এ Groups ব্যবহার করে একাধিক অংশকে গ্রুপ হিসেবে আখ্যায়িত করা হয়। গ্রুপিং স্ট্রিংয়ের একটি নির্দিষ্ট অংশকে একটি ইউনিট হিসেবে ধারণ করে এবং পরে সেটি থেকে ডেটা বের করার জন্য খুবই কার্যকর।
গ্রুপ দুটি ধরনের হতে পারে:
- Capturing Groups (ধরা গ্রুপ)
- Non-capturing Groups (অধরা গ্রুপ)
Capturing Groups (ধরা গ্রুপ)
Capturing Groups বা ধরা গ্রুপ প্যাটার্নের মধ্যে বন্ধনী () ব্যবহার করে তৈরি করা হয় এবং এটি স্ট্রিংয়ের একটি অংশ ধরে রাখে, যা পরে backreference হিসেবে ব্যবহার করা যায়। এটি মূলত একটি ম্যাচের অংশকে আলাদাভাবে এক্সট্রাক্ট (extract) বা রেফার (refer) করতে ব্যবহৃত হয়।
Capturing Groups এর সিনট্যাক্স
let regex = /(abc)/;
let str = "abc def";
let result = regex.exec(str);
console.log(result[1]); // "abc"
এখানে, /(abc)/ প্যাটার্নে abc কে একটি গ্রুপ হিসেবে ধরেছে, এবং exec() মেথডে ফলস্বরূপ প্রথম ম্যাচ হিসেবে এটি ধরা পড়েছে। result[1] দিয়ে আমরা ধরা গ্রুপের মানটি বের করেছি।
একাধিক Capturing Groups
একাধিক গ্রুপের ক্ষেত্রে, প্রতিটি গ্রুপ আলাদাভাবে স্টোর করা হয়। আপনি প্রতিটি গ্রুপের মান বের করতে পারেন।
let regex = /(\d+)-(\d+)/;
let str = "2024-12";
let result = regex.exec(str);
console.log(result[1]); // "2024"
console.log(result[2]); // "12"
এখানে, (\d+) দুটি গ্রুপ তৈরি করছে — একটি বছরের জন্য এবং অন্যটি মাসের জন্য। result[1] এবং result[2] দিয়ে যথাক্রমে বছর এবং মাস বের করা হয়েছে।
Non-capturing Groups (অধরা গ্রুপ)
Non-capturing Groups বা অধরা গ্রুপ স্ট্রিংয়ের একটি অংশকে গ্রুপের মধ্যে রাখে কিন্তু সেটি ধরার জন্য কোনো রেফারেন্স (backreference) তৈরি করে না। সাধারণত এই ধরনের গ্রুপ ব্যবহৃত হয় যখন আপনি শুধুমাত্র প্যাটার্নে গ্রুপিং করতে চান, কিন্তু ওই গ্রুপ থেকে কোনো মান বের করতে চান না।
Non-capturing Groups তৈরি করতে (?:) সিনট্যাক্স ব্যবহার করা হয়। এখানে ?: নির্দেশ করে যে এটি একটি গ্রুপ হলেও তা ধরা হবে না।
Non-capturing Groups এর সিনট্যাক্স
let regex = /(?:abc)/;
let str = "abc def";
let result = regex.exec(str);
console.log(result); // ["abc"]
এখানে, (?:abc) একটি Non-capturing Group তৈরি করেছে, কিন্তু এতে কোনো আলাদা ম্যাচ বা রেফারেন্স তৈরি হয়নি। এর ফলে, যখন exec() মেথড ব্যবহার করা হবে, তখন এটি পুরো স্ট্রিং ম্যাচ করবে, কিন্তু কোনো আলাদা গ্রুপের ডেটা থাকবে না।
Non-capturing Groups এর ব্যবহার
Non-capturing Groups সাধারণত তখন ব্যবহৃত হয় যখন আপনি প্যাটার্নে গ্রুপিং করতে চান কিন্তু গ্রুপ থেকে কোনো মান বের করতে চান না। এটি performance optimization এর জন্যও ব্যবহার করা যায় কারণ এটি অতিরিক্ত তথ্য তৈরি করে না।
let regex = /(?:abc|def)/;
let str = "abc def";
let result = regex.exec(str);
console.log(result[0]); // "abc"
এখানে, (?:abc|def) প্যাটার্নটি "abc" বা "def" এর সাথে মিলবে, কিন্তু কোন আলাদা গ্রুপ হিসেবে কিছু স্টোর হবে না।
Capturing Groups এবং Non-capturing Groups এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Capturing Groups | Non-capturing Groups |
|---|---|---|
| সিনট্যাক্স | (abc) | (?:abc) |
| ম্যাচের মান রাখা | হ্যাঁ, গ্রুপের মান সংরক্ষণ করা হয় | না, গ্রুপের মান সংরক্ষণ করা হয় না |
| ব্যাকরেফারেন্স (backreference) | হ্যাঁ | না |
| পারফরমেন্স | কম পারফরমেন্স (যেহেতু গ্রুপের মান সংরক্ষণ করা হয়) | ভালো পারফরমেন্স (গ্রুপের মান সংরক্ষণ করা হয় না) |
সারাংশ
Capturing Groups এবং Non-capturing Groups JavaScript এর RegExp এর দুটি গুরুত্বপূর্ণ বৈশিষ্ট্য। যেখানে Capturing Groups স্ট্রিংয়ের নির্দিষ্ট অংশগুলো ধরে রাখে এবং পরে সেগুলোর মান বের করার সুযোগ দেয়, সেখানে Non-capturing Groups শুধু গ্রুপিংয়ের জন্য ব্যবহৃত হয় এবং এতে কোনো রেফারেন্স তৈরি করা হয় না। Non-capturing Groups পারফরমেন্স অপটিমাইজেশন এবং জটিল প্যাটার্নের জন্য বেশ কার্যকর।
JavaScript এর RegExp এ Named Capturing Groups (নামকৃত ধরা গ্রুপ) ব্যবহার করে গ্রুপের ফলাফলকে একটি নাম দিয়ে অ্যাক্সেস করা সম্ভব হয়, যা গ্রুপের ইনডেক্স দিয়ে অ্যাক্সেস করার পরিবর্তে আরও পাঠযোগ্য এবং সহজ হয়ে ওঠে। Named Capturing Groups দিয়ে আপনি গ্রুপের মানকে সরাসরি একটি নামের মাধ্যমে অ্যাক্সেস করতে পারেন, ফলে কোডের পাঠযোগ্যতা এবং ব্যবস্থাপনাও সহজ হয়।
Named Capturing Groups এর সিনট্যাক্স
Named Capturing Group তৈরি করতে প্যাটার্নের মধ্যে ? এবং <> ব্যবহার করতে হয়।
সিনট্যাক্স:
/(?<groupName>pattern)/
এখানে, groupName হল গ্রুপের নাম এবং pattern হল সেই অংশ যা আপনি গ্রুপ করতে চান।
Named Capturing Group ব্যবহার করার উদাহরণ
ধরা যাক, আপনি একটি স্ট্রিং থেকে তারিখ বের করতে চান, যেখানে দিন, মাস, এবং বছর আলাদা গ্রুপ হিসেবে বের করা হবে। এখানে আমরা Named Capturing Group ব্যবহার করব।
let regex = /(?<day>\d{2})-(?<month>\d{2})-(?<year>\d{4})/;
let str = "25-12-2024";
let result = regex.exec(str);
console.log(result.groups.day); // "25"
console.log(result.groups.month); // "12"
console.log(result.groups.year); // "2024"
এখানে:
(?<day>\d{2})— দিন (day) গ্রুপ হিসেবে মেলানো হবে।(?<month>\d{2})— মাস (month) গ্রুপ হিসেবে মেলানো হবে।(?<year>\d{4})— বছর (year) গ্রুপ হিসেবে মেলানো হবে।
result.groups অবজেক্টে আপনি নাম অনুযায়ী প্রতিটি গ্রুপের মান পেতে পারেন। যেমন, result.groups.day, result.groups.month, এবং result.groups.year।
Named Capturing Group এর সুবিধা
- পাঠযোগ্যতা: Named Capturing Groups কোডের পাঠযোগ্যতা উন্নত করে। গ্রুপের মান বের করার জন্য নাম ব্যবহার করা সহজ এবং কোডকে আরও স্পষ্ট করে তোলে।
- ব্যবহার সহজতা: ইনডেক্স ব্যবহার করার চেয়ে নাম ব্যবহার করা অনেক বেশি সুবিধাজনক, কারণ গ্রুপগুলোর উদ্দেশ্য স্পষ্ট থাকে।
- বিস্তৃত প্যাটার্ন: যখন আপনি জটিল প্যাটার্ন ব্যবহার করছেন, তখন Named Capturing Groups প্রতিটি গ্রুপের উদ্দেশ্যকে স্পষ্ট করে দেয়।
Named Capturing Groups এবং সাধারণ Capturing Groups এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Named Capturing Groups | General Capturing Groups |
|---|---|---|
| গ্রুপের মান এক্সেস | result.groups.groupName | result[1], result[2] ইত্যাদি |
| গ্রুপের নাম | হ্যাঁ, স্পষ্ট নাম ব্যবহার করা যায় | না, ইনডেক্স ব্যবহার করতে হয় |
| কোডের পাঠযোগ্যতা | অনেক বেশি | কম |
সারাংশ
Named Capturing Groups JavaScript এর RegExp-এ গ্রুপের মানের জন্য একটি নাম নির্ধারণ করতে ব্যবহৃত হয়, যা গ্রুপের মান বের করার প্রক্রিয়াকে সহজ এবং পাঠযোগ্য করে তোলে। এটি কোডের স্পষ্টতা এবং রক্ষণাবেক্ষণ ক্ষমতা বৃদ্ধি করে, বিশেষত যখন জটিল প্যাটার্ন ব্যবহার করা হয়। Named Capturing Groups এর মাধ্যমে স্ট্রিংয়ের বিভিন্ন অংশ খুব সহজেই আলাদা করা এবং রেফার করা যায়।
Read more