VSCode -এ regEx ব্যবহার করে খুব গ্রুপ টেক্সট পরিবর্তনের উপায়

VSCode -এ regEx ব্যবহার করে খুব গ্রুপ টেক্সট পরিবর্তনের উপায় 
৪ জানুয়ারি, ২০২৫, শনিবার 

কাজের জায়গায় regEX ব্যবহার করে একটা প্রবেলম সল্ভ করলাম। যেটা করতে ম্যানুয়ালি অনেক সময় লাগতো, সেটা VSCode -এ সার্চ-রিপ্লেস টুল আর regEx ব্যবহার করে খুব সহজে, চট করে করে ফেললাম। সেটাই শেয়ার করার জন্য লিখছি। ডিসক্লাইমার: আমি নিজে উপায়টা বের করি নাই, আমার কলিগ মাইকেলের কাছ থেকে শিখলাম। 

প্রথমে প্রবলেমটা কি ছিল সেটা বলি: আমাদের কোডবেসে একটা রেফ্যাক্টরিং করতে হবে। সহজ একটা রেফ্যাক্টরিং। কিন্তু কোডের অনেক জায়গায় এই একই কাজ করতে হবে: একটা নির্দিষ্ট মেথডের প্রথম প্যারামিটার অপরিবর্তিত রেখে, দ্বিতীয় প্যারামিটার, যেটা একটা ডিকশেনারী, তাতে একটা নতুন কী-ভ্যালু পেয়ার, newKey: newVal যোগ করতে হবে। নিচের ছবিতে উদাহরণ দিচ্ছি, বাম দিকের ছবিতে এখন যা আছে, আর ডানের ছবিতে রেফ্যাক্টরিং করে আমরা যেইটা চাই, সেটা দিয়ে দিচ্ছি। 


ছবি ১: বামে এখন যা আছে, ডানে রেফ্যাক্টরিং করে আমরা যা চাই 

এখন এই 'someMethod' মেথড কোডবেসের কমপক্ষে ৪০০+ জায়গায়, ১০০+ বেশি ফাইলে আছে। আবার কিছু কিছু জায়গায়, আমরা যা চাই, তা অলরেডি দেয়া আছে। যেমন ছবিতে লাইন ২। এখন কিভাবে কাজটা করবো? প্রথম যেই সলুশনটা ভাবলাম তা হচ্ছে, সিম্পলি 'someMethod' সার্চ করে ম্যানুয়ালি এক-এক করে আপডেট করা। কিন্তু এইটা অনেক সময়সাধ্য একটা কাজ। 

দ্বিতীয় সলুশনটা হচ্ছে regEx ব্যবহার করে সার্চ-এন্ড-রিপ্লেস। সমস্যাটা হচ্ছে, প্রথম প্যারামিটার আর দ্বিতীয় প্যারামিটার-এর ডিকশনারিতে অলরেডি যে ভ্যালুগুলো আছে, সেগুলো তো অক্ষত রাখতে হবে। আর এইটাই regEx দিয়ে গ্রুপ করে করে রিপ্লেস করে ফেলা যায়। নিচের ছবিতে উদাহরণ দিচ্ছি। 


ছবি ২: regEx ব্যবহার করে গ্রুপ ভ্যালু রেখে সার্চ-রিপ্লেস 


VSCode 'র সার্চ টুলে গিয়ে, .* অপশন ক্লিক করে regEx এনাবল করে নিতে হবে। এরপর এই regEx লিখলে: someMethod\((.*),\s*\{([^n]*)\}\)$ - তা প্রথম প্যারামিটার ভ্যালু, আর দ্বিতীয় প্যারামিটার 'র ভ্যালু গ্রুপ আকারে কপি করবে। regEx -এ হাইলাইট করা (.*) নোটেশন গ্রুপ বোঝায়। আর ([^n])* বলছে n -দিয়ে শুরু হচ্ছে না -এমন ক্যারেক্টার কম্বিনেশন। এটা দরকার কেননা আমরা লাইন-২ তে অলরেডি যেই ভ্যালু আছে, সেটা বাদ বা ইগনোর করতে চাই। এরপর $1 আর $2 সিম্বল দিয়ে কপি করা সেই গ্রুপ গুলোর ভ্যালু  রিপ্লেসমেন্ট ভ্যালু হিসাবে বসিয়ে দিচ্ছি। ব্যাস, 'Replace All' - করলেই মুহূর্তেই ৪০০'ও বেশি লাইনে, যা কিনা ১০০'ও বেশি ফাইলে আছে এই রেফ্যাক্টরিং হয়ে গেলো! দারুন না!?

regEx 'র আরেকটা মজা হচ্ছে, এই একই কাজ অন্য regEx এক্সপ্রেশন দিয়েও করা যায়। সেটা কী কেউ জানলে সাজেস্ট করবেন, ধন্যবাদ!


VSCode -এ regEx ব্যবহার করে খুব গ্রুপ টেক্সট পরিবর্তনের উপায়

VSCode -এ regEx ব্যবহার করে খুব গ্রুপ টেক্সট পরিবর্তনের উপায়  ৪ জানুয়ারি, ২০২৫, শনিবার  কাজের জায়গায় regEX ব্যবহার করে একটা প্রবেলম সল্ভ করল...