জাভাস্ক্রিপ্টে রেগুলার এক্সপ্রেশনের মধ্যে ক্যাপচার গ্রুপ
ক্যাপচার গ্রুপের বিষয়বস্তু শুধুমাত্র প্রতিস্থাপন স্ট্রিংতেই নয়, বরং রেগুলার এক্সপ্রেশনের মধ্যেও অ্যাক্সেসযোগ্য: আমরা কিছু একটি ক্যাপচার গ্রুপে রাখতে পারি, এবং তারপর সরাসরি রেগুলার এক্সপ্রেশনে বলে দিতে পারি যে এখানে এই ক্যাপচার গ্রুপের বিষয়বস্তু থাকতে হবে।
ক্যাপচার গ্রুপের বিষয়বস্তু তাদের নম্বর দিয়ে অ্যাক্সেস করা যায়,
যার আগে ব্যাকস্ল্যাশ থাকে। উদাহরণস্বরূপ,
প্রথম ক্যাপচার গ্রুপ এভাবে অ্যাক্সেস করা যাবে: \1,
দ্বিতীয় ক্যাপচার গ্রুপ এভাবে - \2, তৃতীয়
- \3 এবং এভাবে চলতে থাকবে।
আমি নিশ্চিত যে উপরে লেখা সবকিছু এখনও আপনার কাছে বিশৃঙ্খল মনে হচ্ছে। এটি আশ্চর্যজনক নয়, কারণ ক্যাপচার গ্রুপ রেগুলার এক্সপ্রেশনের সবচেয়ে বোধগম্য অংশ। আসুন উদাহরণের মাধ্যমে বুঝতে চেষ্টা করি।
উদাহরণ
ধরুন আমাদের কাছে এমন একটি স্ট্রিং আছে:
let str = 'aa bb cd ef';
আসুন এতে সমস্ত জায়গা খুঁজে বের করি যেখানে পরপর দুটি একই অক্ষর আছে। সমস্যার সমাধান করার জন্য, আমরা যেকোনো অক্ষর খুঁজব, এটিকে একটি ক্যাপচার গ্রুপে রাখব, এবং তারপর পরীক্ষা করব যে পরবর্তী অক্ষরটি এই ক্যাপচার গ্রুপের বিষয়বস্তু কিনা:
let res = str.replace(/([a-z])\1/g, '!');
ফলস্বরূপ ভেরিয়েবলে নিম্নলিখিতটি লেখা হবে:
'! ! cd ef'
উদাহরণ
ধরুন আমাদের কাছে এমন একটি স্ট্রিং আছে:
let str = 'asxca buzxb csgd';
আসুন এতে সমস্ত শব্দ খুঁজে বের করি, যেখানে প্রথম এবং শেষ অক্ষর একই। সমাধান করার জন্য নিম্নলিখিত প্যাটার্ন লিখি: একটি অক্ষর, তারপর এক বা একাধিক অক্ষর, এবং তারপর প্রথম অক্ষরের মতো একই অক্ষর:
let res = str.replace(/([a-z])[a-z]+\1/g, '!');
ফলস্বরূপ ভেরিয়েবলে নিম্নলিখিতটি লেখা হবে:
'! ! csgd'
ব্যবহারিক সমস্যা
একটি স্ট্রিং দেওয়া আছে:
let str = 'aaa bbb ccc xyz';
সমস্ত সাবস্ট্রিং খুঁজুন, যেখানে পরপর তিনটি একই অক্ষর আছে।
একটি স্ট্রিং দেওয়া আছে:
let str = 'a aa aaa aaaa aaaaa';
সমস্ত সাবস্ট্রিং খুঁজুন, যেখানে পরপর দুটি বা তার বেশি একই অক্ষর আছে।
একটি স্ট্রিং দেওয়া আছে:
let str = 'aaa aaa bbb bbb ccc ddd';
সমস্ত সাবস্ট্রিং খুঁজুন, যেখানে পরপর দুটি একই শব্দ আছে।