জাভাস্ক্রিপ্টে রেগুলার এক্সপ্রেশনের এই সম্পূর্ণ নির্দেশিকায় আপনাকে স্বাগতম! এই প্রবন্ধে, আমরা বিস্তারিতভাবে দেখব যে রেগুলার এক্সপ্রেশন কী, জাভাস্ক্রিপ্টে কীভাবে এগুলো ব্যবহার করা হয় এবং কীভাবে এগুলো আপনার কোডকে সহজ এবং অপ্টিমাইজ করতে সাহায্য করতে পারে। আপনার জাভাস্ক্রিপ্ট প্রকল্পগুলিতে রেগুলার এক্সপ্রেশনের সর্বাধিক ব্যবহার শুরু করার জন্য আপনার যা জানা দরকার তার সবকিছুই আমরা মৌলিক বিষয় থেকে শুরু করে ব্যবহারিক উদাহরণ পর্যন্ত আলোচনা করব। তাহলে শুরু করা যাক!
রেগুলার এক্সপ্রেশনের ভূমিকা
রেগুলার এক্সপ্রেশন হলো সার্চ প্যাটার্ন যা ক্যারেক্টার স্ট্রিং-এ টেক্সট খুঁজে বের করতে এবং ম্যানিপুলেট করতে ব্যবহৃত হয়। এগুলিতে আক্ষরিক অক্ষর এবং মেটাঅ্যাক্টরগুলির সংমিশ্রণ রয়েছে, যা পাঠ্যে মিল খুঁজে বের করার জন্য নির্দিষ্ট নিয়মগুলি সংজ্ঞায়িত করে। এই নিয়মগুলির মধ্যে নির্দিষ্ট অক্ষর, অক্ষর পরিসর, পুনরাবৃত্তি, বিকল্প এবং আরও অনেক কিছু অনুসন্ধান করা অন্তর্ভুক্ত থাকতে পারে।
জাভাস্ক্রিপ্টে, রেগুলার এক্সপ্রেশন ক্লাস ব্যবহার করে তৈরি করা হয় RegExp অথবা আক্ষরিক অর্থে ব্যবহার করে /patrón/. প্যাটার্নটি হল রেগুলার এক্সপ্রেশন, যা ফরোয়ার্ড স্ল্যাশের মধ্যে আবদ্ধ। আসুন একটি সহজ উদাহরণ দেখি:
const regex = /hola/;
এই উদাহরণে, আমরা একটি রেগুলার এক্সপ্রেশন তৈরি করেছি যা একটি টেক্সটের মধ্যে "hello" স্ট্রিংটি অনুসন্ধান করবে। এখন যেহেতু আমরা রেগুলার এক্সপ্রেশন সম্পর্কে প্রাথমিক ধারণা পেয়েছি, আসুন জাভাস্ক্রিপ্টে এগুলোর সাথে কাজ করার জন্য কিছু মূল ধারণা এবং উন্নত কৌশলগুলি অন্বেষণ করি।
রেগুলার এক্সপ্রেশনের মৌলিক বাক্য গঠন
জাভাস্ক্রিপ্টে রেগুলার এক্সপ্রেশনগুলি বেশ কয়েকটি মূল উপাদান দিয়ে তৈরি যা আমাদের আরও জটিল অনুসন্ধান প্যাটার্নগুলি সংজ্ঞায়িত করতে দেয়। এই উপাদানগুলির মধ্যে রয়েছে আক্ষরিক অক্ষর, মেটাচ্যারেক্টার, চরিত্রের ক্লাস, কোয়ান্টিফায়ার, অ্যাঙ্কর এবং আরও অনেক কিছু। আসুন এই উপাদানগুলির কিছু উদাহরণ দেখি:
আক্ষরিক অক্ষর
আক্ষরিক অক্ষর হলো সেইসব অক্ষর যেগুলো লেখায় প্রদর্শিত হওয়ার সাথে সাথে অনুসন্ধান করা হয়। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি /hola/ একটি টেক্সট স্ট্রিং-এ "হ্যালো" অক্ষরের ক্রম অনুসন্ধান করবে। এটা মনে রাখা গুরুত্বপূর্ণ যে রেগুলার এক্সপ্রেশনগুলি কেস সংবেদনশীল, তাই /hola/ "হ্যালো" বা "হ্যালো" এর সাথে মিলবে না।
মেটাঅক্ষর
মেটাঅ্যাক্টর হলো বিশেষ অক্ষর যাদের রেগুলার এক্সপ্রেশনে বিশেষ অর্থ থাকে। উদাহরণস্বরূপ, মেটাচ্যারেক্টার . এটি একটি নতুন লাইন ছাড়া যেকোনো অক্ষরকে উপস্থাপন করতে ব্যবহৃত হয়। আরেকটি সাধারণ মেটাচ্যারেক্টার হল ^, যা একটি টেক্সট স্ট্রিংয়ের শুরু নির্দেশ করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি /^hola/ "হ্যালো" দিয়ে শুরু হওয়া যেকোনো টেক্সট স্ট্রিং এর সাথে মিলবে।
চরিত্রের ক্লাস
একটি নির্দিষ্ট সেটের মধ্যে যেকোনো অক্ষর অনুসন্ধান করতে ক্যারেক্টার ক্লাস ব্যবহার করা হয়। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি /[aeiou]/ একটি টেক্সট স্ট্রিং-এর যেকোনো স্বরবর্ণের সাথে মিলবে। অক্ষর শ্রেণীতে অক্ষর পরিসর ব্যবহার করাও সম্ভব। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি /[a-z]/ যেকোনো ছোট হাতের অক্ষরের সাথে মিলবে।
কোয়ান্টিফায়ার
একটি রেগুলার এক্সপ্রেশনে একটি এলিমেন্টের ঘটনার সংখ্যা নির্দিষ্ট করতে কোয়ান্টিফায়ার ব্যবহার করা হয়। উদাহরণস্বরূপ, কোয়ান্টিফায়ার * নির্দেশ করে যে পূর্ববর্তী উপাদানটি শূন্য বা তার বেশি বার প্রদর্শিত হতে পারে। কোয়ান্টিফায়ার + নির্দেশ করে যে পূর্ববর্তী উপাদানটি এক বা একাধিকবার উপস্থিত হওয়া উচিত। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি /a+/ একটি টেক্সট স্ট্রিং-এ এক বা একাধিক "a"s মিলবে।
অ্যাঙ্কারস
একটি টেক্সট স্ট্রিংয়ের মধ্যে মিলের অবস্থান নির্দেশ করতে অ্যাঙ্কর ব্যবহার করা হয়। উদাহরণস্বরূপ, নোঙ্গর \b একটি শব্দ সীমানার সাথে মেলে। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি /bholab/ শুধুমাত্র "হ্যালো" শব্দটির সাথে মিলবে a পূর্ণ শব্দ, "হ্যালো" যুক্ত লম্বা শব্দগুলির সাথে মিল না করে।
এগুলো জাভাস্ক্রিপ্টে রেগুলার এক্সপ্রেশনের মৌলিক সিনট্যাক্সের কয়েকটি উদাহরণ মাত্র। এই আর্টিকেলটি পড়ার সাথে সাথে আমরা জাভাস্ক্রিপ্টে রেগুলার এক্সপ্রেশন নিয়ে কাজ করার আরও উন্নত ধারণা এবং কৌশল সম্পর্কে জানব।
মৌলিক মিল অনুসন্ধান
রেগুলার এক্সপ্রেশনের মাধ্যমে সম্পাদিত সবচেয়ে সাধারণ ক্রিয়াকলাপগুলির মধ্যে একটি হল একটি টেক্সট স্ট্রিং-এ মিল অনুসন্ধান করা। জাভাস্ক্রিপ্টে, আমরা পদ্ধতিটি ব্যবহার করতে পারি search() একটি টেক্সট স্ট্রিং-এ একটি রেগুলার এক্সপ্রেশনের প্রথম মিল খুঁজে পেতে। আসুন একটি উদাহরণ দেখি:
const texto = "¡Hola, mundo!"; const regex = /mundo/; const indice = texto.search(regex); console.log(indice); // 7
এই উদাহরণে, আমরা পদ্ধতিটি ব্যবহার করেছি search() রেগুলার এক্সপ্রেশনের প্রথম মিল খুঁজে পেতে /mundo/ "হ্যালো, পৃথিবী!" টেক্সট স্ট্রিং-এ পদ্ধতিটি search() প্রথম পাওয়া মিলের সূচক প্রদান করে, অথবা যদি কোন মিল না পাওয়া যায় তবে -1 প্রদান করে।
পদ্ধতি ছাড়াও search(), জাভাস্ক্রিপ্ট রেগুলার এক্সপ্রেশনের সাথে কাজ করার জন্য অন্যান্য দরকারী পদ্ধতিও প্রদান করে, যেমন match(), replace(), split() y test(). এই প্রতিটি পদ্ধতির নিজস্ব উদ্দেশ্য রয়েছে এবং আপনার নির্দিষ্ট চাহিদা অনুসারে ব্যবহার করা যেতে পারে।
সংশোধক এবং পতাকা ব্যবহার
জাভাস্ক্রিপ্টে, রেগুলার এক্সপ্রেশনে মডিফায়ার এবং ফ্ল্যাগ থাকতে পারে যা আরও নমনীয় এবং কাস্টমাইজড অনুসন্ধানের অনুমতি দেয়। একটি রেগুলার এক্সপ্রেশনের শেষে মডিফায়ার যোগ করা হয় এবং এর আচরণ পরিবর্তন করে। সবচেয়ে সাধারণ কিছু সংশোধক হল:
আমি (অসংবেদনশীল)
সংশোধক i কেস-অসংবেদনশীল অনুসন্ধান সম্পাদন করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি /hola/i "হ্যালো" এবং "হ্যালো" অথবা "হ্যালো" উভয়ের সাথেই মিলবে।
g (বিশ্বব্যাপী)
সংশোধক g এটি প্রথম পাওয়া মিলটিতে থামার পরিবর্তে সমগ্র টেক্সট স্ট্রিং-এ একটি বিশ্বব্যাপী অনুসন্ধান সম্পাদন করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি /a+/g একটি টেক্সট স্ট্রিং-এ এক বা একাধিক "a"-এর সমস্ত ঘটনার সাথে মিলবে।
মি (বহুরেখা)
সংশোধক m এটি একটি টেক্সট স্ট্রিংয়ের মধ্যে একাধিক লাইনে অনুসন্ধান করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি /^hola/m একটি টেক্সট স্ট্রিং-এর প্রতিটি লাইনের শুরুতে "হ্যালো" শব্দটির সাথে মিলবে।
মডিফায়ার ছাড়াও, জাভাস্ক্রিপ্ট রেগুলার এক্সপ্রেশনে ফ্ল্যাগ ব্যবহারের অনুমতি দেয়। ক্লাস ব্যবহার করে একটি রেগুলার এক্সপ্রেশন তৈরি করার সময় দ্বিতীয় স্ল্যাশের পরে পতাকা যোগ করা হয়। RegExp. সবচেয়ে সাধারণ পতাকাগুলির মধ্যে কয়েকটি হল:
আমি (অসংবেদনশীল)
সংশোধকটির মতো i, পতাকা i একটি কেস-অসংবেদনশীল অনুসন্ধান করে। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি new RegExp("hola", "i") "হ্যালো" এবং "হ্যালো" অথবা "হ্যালো" উভয়ের সাথেই মিলবে।
g (বিশ্বব্যাপী)
সংশোধকটির মতো g, পতাকা g সম্পূর্ণ টেক্সট স্ট্রিং-এ একটি বিশ্বব্যাপী অনুসন্ধান সম্পাদন করে। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি new RegExp("a+", "g") একটি টেক্সট স্ট্রিং-এ এক বা একাধিক "a"-এর সমস্ত ঘটনার সাথে মিলবে।
মি (বহুরেখা)
সংশোধকটির মতো m, পতাকা m একটি টেক্সট স্ট্রিংয়ের মধ্যে একাধিক লাইনে অনুসন্ধান করে। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি new RegExp("^hola", "m") একটি টেক্সট স্ট্রিং-এর প্রতিটি লাইনের শুরুতে "হ্যালো" শব্দটির সাথে মিলবে।
জাভাস্ক্রিপ্ট রেগুলার এক্সপ্রেশনে মডিফায়ার এবং ফ্ল্যাগ ব্যবহার করে বিভিন্ন ক্ষেত্র ও নির্দিষ্ট প্রয়োজন অনুযায়ী সার্চকে সাজিয়ে নেওয়া খুবই কার্যকরী হতে পারে। এগুলো নিয়ে পরীক্ষা-নিরীক্ষা করুন এবং আবিষ্কার করুন কীভাবে আপনি আপনার কোডে এই বৈশিষ্ট্যগুলোর সর্বোত্তম ব্যবহার করতে পারেন ।
মেটাঅ্যাক্টর এবং বিশেষ অক্ষর
মেটাঅ্যাক্টর এবং বিশেষ অক্ষর হল রেগুলার এক্সপ্রেশনের মূল উপাদান যা আমাদের আরও শক্তিশালী এবং নমনীয় অনুসন্ধান করতে সাহায্য করে। আমরা ইতিমধ্যেই কিছু মেটাঅ্যাক্টর উল্লেখ করেছি, যেমন . y ^, কিন্তু আরও অনেক কিছু আছে যা আপনি আপনার রেগুলার এক্সপ্রেশনে ব্যবহার করতে পারেন। চলুন কিছু সাধারণ মেটাচ্যারেক্টার এবং বিশেষ অক্ষর দেখি:
। (পয়েন্ট)
মেটাচ্যারেক্টার . এটি একটি নতুন লাইন ছাড়া যেকোনো অক্ষরকে উপস্থাপন করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি /h.t/ "hat," "hot," "hit," এবং "h" দিয়ে শুরু এবং "t" দিয়ে শেষ হওয়া অন্য যেকোনো তিন অক্ষরের শব্দের সাথে মিলবে।
\ (ব্যাকস্ল্যাশ)
রেগুলার এক্সপ্রেশনে বিশেষ অক্ষর এড়িয়ে যাওয়ার জন্য ব্যাকস্ল্যাশ ব্যবহার করা হয়। উদাহরণস্বরূপ, যদি আপনি একটি টেক্সট স্ট্রিং-এ একটি আক্ষরিক সময়কাল অনুসন্ধান করতে চান, তাহলে আপনাকে ব্যাকস্ল্যাশ ব্যবহার করে এটি এড়িয়ে যেতে হবে। নিয়মিত অভিব্যক্তি /www\.google\.com/ "www.google.com" টেক্সট স্ট্রিং এর সাথে মিলবে।
\d (অঙ্ক)
মেটাচ্যারেক্টার \d ০ থেকে ৯ পর্যন্ত যেকোনো অঙ্ক অনুসন্ধান করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, রেগুলার এক্সপ্রেশন /\d+/ একটি টেক্সট স্ট্রিং-এর যেকোনো এক বা একাধিক সংখ্যার সংখ্যার সাথে মিলবে।
\w (বর্ণানুক্রমিক অক্ষর)
মেটাচ্যারেক্টার \w যেকোনো বর্ণসংখ্যার অক্ষর (বড় এবং ছোট হাতের অক্ষর, সংখ্যা এবং আন্ডারস্কোর) অনুসন্ধান করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি /\w+/ একটি টেক্সট স্ট্রিং-এ এক বা একাধিক বর্ণসংখ্যার অক্ষরের যেকোনো শব্দের সাথে মিলবে।
এগুলো হল মেটাচ্যারেক্টার এবং বিশেষ অক্ষরের কয়েকটি উদাহরণ যা আপনি আপনার রেগুলার এক্সপ্রেশনে ব্যবহার করতে পারেন। জাভাস্ক্রিপ্টে রেগুলার এক্সপ্রেশনের সাথে যত বেশি পরিচিত হবেন, ততই আপনার অনুসন্ধান এবং টেক্সট ম্যানিপুলেশনের জন্য আপনি বিভিন্ন ধরণের বিকল্প আবিষ্কার করতে পারবেন।
অক্ষর শ্রেণী এবং পরিসর
রেগুলার এক্সপ্রেশনের আরেকটি গুরুত্বপূর্ণ উপাদান হল ক্যারেক্টার ক্লাস যা আমাদের একটি নির্দিষ্ট সেটের মধ্যে যেকোনো ক্যারেক্টার অনুসন্ধান করতে সাহায্য করে। জাভাস্ক্রিপ্টে, আমরা বন্ধনী ব্যবহার করতে পারি [] একটি অক্ষর শ্রেণী সংজ্ঞায়িত করতে। আসুন চরিত্রের ক্লাস এবং রেঞ্জের কিছু উদাহরণ দেখি:
[আয়েইউ]
চরিত্র শ্রেণী [aeiou] একটি টেক্সট স্ট্রিং-এর যেকোনো স্বরবর্ণের সাথে মিলবে। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি /[aeiou]/ একটি টেক্সট স্ট্রিং-এ "a", "e", "i", "o", অথবা "u" এর সাথে মিলবে।
[আজ]
চরিত্রের পরিসর [a-z] ইংরেজি বর্ণমালার যেকোনো ছোট হাতের অক্ষরের সাথে মিলবে। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি /[a-z]/ একটি টেক্সট স্ট্রিং-এর যেকোনো ছোট হাতের অক্ষরের সাথে মিলবে।
[0-9]
চরিত্রের পরিসর [0-9] একটি টেক্সট স্ট্রিং-এ ০ থেকে ৯ পর্যন্ত যেকোনো অঙ্কের সাথে মিলবে। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি /[0-9]/ যেকোনো একক অঙ্কের সংখ্যার সাথে মিলবে।
[A-Za-z]
চরিত্র শ্রেণী [A-Za-z] ইংরেজি বর্ণমালার যেকোনো বড় বা ছোট হাতের অক্ষরের সাথে মিলবে। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি /[A-Za-z]/ টেক্সট স্ট্রিংয়ের যেকোনো অক্ষরের সাথে মিলবে।
ক্যারেক্টার ক্লাস এবং রেঞ্জ আমাদেরকে রেগুলার এক্সপ্রেশনে অনুসন্ধানের জন্য নির্দিষ্ট অক্ষরের সেট সংজ্ঞায়িত করতে দেয়। আপনার বিশেষ চাহিদা এবং সীমাবদ্ধতা অনুসারে আপনার অনুসন্ধানগুলিকে সাজাতে এগুলি ব্যবহার করুন।
কোয়ান্টিফায়ার এবং পুনরাবৃত্তি
কোয়ান্টিফায়ার এবং পুনরাবৃত্তি হল রেগুলার এক্সপ্রেশনের মূল উপাদান যা আমাদের একটি টেক্সট স্ট্রিং-এ একটি উপাদানের ঘটনার সংখ্যা নির্দিষ্ট করতে দেয়। আসুন জাভাস্ক্রিপ্টের কিছু সাধারণ কোয়ান্টিফায়ার দেখি:
* (তারকা)
কোয়ান্টিফায়ার * নির্দেশ করে যে পূর্ববর্তী উপাদানটি শূন্য বা তার বেশি বার প্রদর্শিত হতে পারে। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি /a*/ একটি টেক্সট স্ট্রিং-এ শূন্য বা তার বেশি 'a' মিলবে।
+ (আরও)
কোয়ান্টিফায়ার + নির্দেশ করে যে পূর্ববর্তী উপাদানটি এক বা একাধিকবার উপস্থিত হওয়া উচিত। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি /a+/ একটি টেক্সট স্ট্রিং-এ এক বা একাধিক "a"s মিলবে।
? (প্রশ্ন)
কোয়ান্টিফায়ার ? নির্দেশ করে যে পূর্ববর্তী উপাদানটি শূন্য বা একবার প্রদর্শিত হতে পারে। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি /colou?r/ "রঙ" এবং "রঙ" উভয়ের সাথেই মিলবে।
{n} (ঠিক n বার)
কোয়ান্টিফায়ার {n} নির্দেশ করে যে পূর্ববর্তী উপাদানটি ঠিক n বার প্রদর্শিত হবে। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি /a{3}/ একটি টেক্সট স্ট্রিং-এর ঠিক তিনটি "a"-এর সাথে মিলবে।
{n,} (কমপক্ষে n বার)
কোয়ান্টিফায়ার {n,} নির্দেশ করে যে পূর্ববর্তী উপাদানটি কমপক্ষে n বার উপস্থিত হতে হবে। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি /a{2,}/ একটি টেক্সট স্ট্রিং-এ দুই বা ততোধিক 'a' মিলবে।
{n,m}
কোয়ান্টিফায়ার {n,m} নির্দেশ করে যে পূর্ববর্তী উপাদানটি কমপক্ষে n বার এবং সর্বাধিক m বার উপস্থিত হতে হবে। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি /a{2,4}/ একটি টেক্সট স্ট্রিং-এ দুটি, তিন, অথবা চারটি "a" মিলবে।
এগুলি হল কয়েকটি কোয়ান্টিফায়ারের উদাহরণ যা আপনি আপনার রেগুলার এক্সপ্রেশনে ব্যবহার করতে পারেন। কোয়ান্টিফায়ার আমাদের টেক্সট অনুসন্ধান এবং ম্যানিপুলেশনে পুনরাবৃত্তির ধরণ নির্দিষ্ট করার অনুমতি দেয়, যার ফলে টেক্সট স্ট্রিং থেকে নির্দিষ্ট তথ্য বের করা সহজ হয়।
নোঙ্গর এবং শব্দের সীমানা
অ্যাঙ্কর এবং শব্দের সীমানা হল এমন উপাদান যা আমাদের একটি টেক্সট স্ট্রিংয়ের মধ্যে একটি মিলের অবস্থান নির্দেশ করতে দেয়। এই উপাদানগুলি বিশেষভাবে কার্যকর যখন আমরা সম্পূর্ণ শব্দ অনুসন্ধান করতে চাই অথবা নিশ্চিত করতে চাই যে একটি মিল একটি লাইনের শুরুতে বা শেষে আছে। আসুন অ্যাঙ্কর এবং শব্দ সীমানার কিছু উদাহরণ দেখি:
\b (শব্দের সীমানা)
শব্দ সীমা \b একটি বর্ণসংখ্যাসূচক অক্ষর এবং একটি অ-বর্ণসংখ্যাসূচক অক্ষরের মধ্যে সীমানা মেলায়। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি /\bjavascript\b/ শুধুমাত্র "জাভাস্ক্রিপ্ট" শব্দটিকে সম্পূর্ণ শব্দ হিসেবে মিলবে, "জাভাস্ক্রিপ্ট" ধারণকারী দীর্ঘ শব্দের সাথে মিলবে না।
^ (লাইনের শুরু)
চরিত্র ^ এটি একটি টেক্সট স্ট্রিং-এ একটি লাইনের শুরু নির্দেশ করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি /^hola/ একটি টেক্সট স্ট্রিং-এর প্রতিটি লাইনের শুরুতে "হ্যালো" শব্দটির সাথে মিলবে।
$ (লাইনের শেষে)
চরিত্র $ এটি একটি টেক্সট স্ট্রিং-এর একটি লাইনের শেষ নির্দেশ করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি /mundo$/ একটি টেক্সট স্ট্রিং-এর প্রতিটি লাইনের শেষে "world" শব্দটির সাথে মিলবে।
\A (লেখার শুরু)
চরিত্র \A এটি শুধুমাত্র একটি লাইনের শুরু নয়, একটি টেক্সট স্ট্রিং-এর সমস্ত টেক্সটের শুরু নির্দেশ করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি /^\AHola/ পুরো লেখার শুরুতে "হ্যালো" শব্দটি মিলবে।
\Z (লেখার শেষে)
চরিত্র \Z শুধুমাত্র একটি লাইনের শেষ নয়, একটি টেক্সট স্ট্রিং-এর সমস্ত টেক্সটের শেষ নির্দেশ করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি /Mundo\Z/ পুরো লেখার শেষে "বিশ্ব" শব্দটির সাথে মিলবে।
অ্যাঙ্কর এবং শব্দের সীমানা আমাদের একটি টেক্সট স্ট্রিংয়ের মধ্যে নির্দিষ্ট স্থানে মিল খুঁজে পেতে সাহায্য করে, যা এমন পরিস্থিতিতে কার্যকর হতে পারে যেখানে আমরা নিশ্চিত করতে চাই যে একটি মিল একটি নির্দিষ্ট অবস্থানে রয়েছে।
গ্রুপ এবং ক্যাপচার
গ্রুপ এবং ক্যাপচার হল রেগুলার এক্সপ্রেশনের উন্নত উপাদান যা আমাদের সাবএক্সপ্রেশনগুলিকে গ্রুপ করতে এবং পরবর্তী ব্যবহারের জন্য ক্যাপচার করতে দেয়। দেখা যাক গ্রুপ এবং ক্যাপচার কিভাবে কাজ করে:
( ) (বন্ধনী)
বন্ধনী হল তারা দলবদ্ধভাবে কাজ করে একটি নিয়মিত অভিব্যক্তিতে উপ-অভিব্যক্তি। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি /(d{2})-(d{2})-(d{4})/ se তারিখ অনুসন্ধান করতে ব্যবহৃত হত "dd-mm-yyyy" বিন্যাসে। দলগুলো ( ) তারা আমাদের দিন, মাস এবং বছরের মান আলাদাভাবে ক্যাপচার করার অনুমতি দেয়।
\1, \2, \3 (গ্রুপ রেফারেন্স)
রেগুলার এক্সপ্রেশনে পূর্বে ক্যাপচার করা গ্রুপগুলিকে উল্লেখ করতে গ্রুপ রেফারেন্স ব্যবহার করা হয়। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি /(\w+) \1/ যেকোনো শব্দের সাথে মিলবে, যেটির পরে একই শব্দ পুনরাবৃত্তি হবে। উদাহরণস্বরূপ, "হ্যালো হ্যালো", "বিশ্ব জগৎ", ইত্যাদি।
?: (অ-ক্যাপচারিং গ্রুপ)
প্রতীক ?: এটি নন-ক্যাপচারিং গ্রুপ তৈরি করতে ব্যবহৃত হয়। এই গ্রুপগুলি তখন ব্যবহার করা হয় যখন আমরা উপ-অভিব্যক্তিগুলিকে গ্রুপ করতে চাই, কিন্তু আমরা ফলাফলটি ক্যাপচার করতে চাই না। উদাহরণস্বরূপ, নিয়মিত অভিব্যক্তি /https?:\/\/(?:www\.)?google\.com/ "http://www.google.com" এবং "https://google.com" উভয়ের সাথে মিলবে, তবে শুধুমাত্র URL এর প্রাসঙ্গিক অংশটি ক্যাপচার করবে।
গ্রুপ এবং ক্যাপচার আমাদের রেগুলার এক্সপ্রেশনগুলোকে আরও কার্যকর ও সহজে পাঠযোগ্য উপায়ে গঠন ও সংগঠিত করতে সাহায্য করে। এছাড়াও, এগুলো আমাদের অ্যাপ্লিকেশনগুলোতে পরবর্তী ব্যবহারের জন্য নির্দিষ্ট মান সংরক্ষণ করার ক্ষমতা দেয় ।
রেগুলার এক্সপ্রেশন নিয়ে কাজ করার জন্য দরকারী পদ্ধতি
জাভাস্ক্রিপ্ট রেগুলার এক্সপ্রেশন নিয়ে কাজ করার জন্য বেশ কিছু কার্যকর পদ্ধতি প্রদান করে। এই পদ্ধতিগুলি আমাদের নিয়মিত এক্সপ্রেশন ব্যবহার করে টেক্সট স্ট্রিং অনুসন্ধান, প্রতিস্থাপন এবং বিভক্ত করার মতো সাধারণ ক্রিয়াকলাপ সম্পাদন করতে দেয়। আসুন এই পদ্ধতিগুলির কিছু দেখি:
ম্যাচ()
পদ্ধতি match() এটি একটি টেক্সট স্ট্রিং-এ একটি রেগুলার এক্সপ্রেশনের সমস্ত মিল খুঁজে বের করতে এবং ফলাফল সহ একটি অ্যারে ফেরত দিতে ব্যবহৃত হয়। উদাহরণস্বরূপ:
const texto = "¡Hola, mundo!"; const regex = /o/g; const coincidencias = texto.match(regex); console.log(coincidencias); // ["o", "o"]
এই উদাহরণে, আমরা পদ্ধতিটি ব্যবহার করেছি match() রেগুলার এক্সপ্রেশনের সকল মিল খুঁজে পেতে /o/g "হ্যালো, পৃথিবী!" টেক্সট স্ট্রিং-এ পদ্ধতিটি match() পাওয়া সমস্ত মিল সহ একটি অ্যারে ফেরত দেয়।
প্রতিস্থাপন ()
পদ্ধতি replace() একটি টেক্সট স্ট্রিং-এ একটি রেগুলার এক্সপ্রেশনের মিলগুলিকে একটি নতুন মান দিয়ে প্রতিস্থাপন করতে ব্যবহৃত হয়। উদাহরণস্বরূপ:
const texto = "¡Hola, mundo!"; const regex = /mundo/; const nuevoTexto = texto.replace(regex, "amigo"); console.log(nuevoTexto); // "¡Hola, amigo!"
এই উদাহরণে, আমরা পদ্ধতিটি ব্যবহার করেছি replace() রেগুলার এক্সপ্রেশন ম্যাচ প্রতিস্থাপন করতে /mundo/ "হ্যালো, পৃথিবী!" টেক্সট স্ট্রিং-এ "বন্ধু" শব্দের জন্য। পদ্ধতিটি replace() প্রতিস্থাপন সহ একটি নতুন টেক্সট স্ট্রিং প্রদান করে।
বিভক্ত ()
পদ্ধতি split() একটি রেগুলার এক্সপ্রেশনকে বিভাজক হিসেবে ব্যবহার করে একটি টেক্সট স্ট্রিংকে সাবস্ট্রিং এর অ্যারেতে বিভক্ত করতে ব্যবহৃত হয়। উদাহরণস্বরূপ:
const texto = "Hola,mundo,amigo"; const regex = /,/g; const subcadenas = texto.split(regex); console.log(subcadenas); // ["Hola", "mundo", "amigo"]
এই উদাহরণে, আমরা পদ্ধতিটি ব্যবহার করেছি split() রেগুলার এক্সপ্রেশন ব্যবহার করে "Hello,world,friend" টেক্সট স্ট্রিংটিকে সাবস্ট্রিং এর একটি অ্যারেতে বিভক্ত করতে /,/g বিভাজক হিসেবে। পদ্ধতিটি split() ফলে সাবস্ট্রিং সহ একটি অ্যারে প্রদান করে।
পরীক্ষা ()
পদ্ধতি test() এটি একটি রেগুলার এক্সপ্রেশনের টেক্সট স্ট্রিং-এ কোন মিল আছে কিনা তা পরীক্ষা করতে ব্যবহৃত হয়। পদ্ধতিটি ফিরে আসে true যদি একটি মিল থাকে এবং false অন্যথায়। উদাহরণস্বরূপ:
const texto = "Hola, mundo!"; const regex = /mundo/; const resultado = regex.test(texto); console.log(resultado); // true
এই উদাহরণে, আমরা পদ্ধতিটি ব্যবহার করেছি test() নিয়মিত অভিব্যক্তি কিনা তা পরীক্ষা করতে /mundo/ "হ্যালো, ওয়ার্ল্ড!" টেক্সট স্ট্রিং-এ কোন মিল আছে কিনা। পদ্ধতিটি test() ফেরত আন true কারণ একটা কাকতালীয় ঘটনা আছে।
জাভাস্ক্রিপ্টে রেগুলার এক্সপ্রেশন নিয়ে কাজ করার জন্য এগুলি হল সবচেয়ে সাধারণ কিছু পদ্ধতি। এই প্রতিটি পদ্ধতির নিজস্ব উদ্দেশ্য রয়েছে এবং আপনার নির্দিষ্ট চাহিদা অনুসারে ব্যবহার করা যেতে পারে। এগুলো নিয়ে পরীক্ষা-নিরীক্ষা করুন এবং আবিষ্কার করুন কিভাবে এগুলো রেগুলার এক্সপ্রেশন দিয়ে আপনার কাজকে সহজ এবং দ্রুততর করতে পারে।
প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী
জাভাস্ক্রিপ্টে রেগুলার এক্সপ্রেশন কী? জাভাস্ক্রিপ্টে রেগুলার এক্সপ্রেশন হলো এমন সার্চ প্যাটার্ন যা ক্যারেক্টার স্ট্রিং-এর মধ্যে থাকা টেক্সট খুঁজে বের করতে এবং সেটির ওপর কাজ করতে ব্যবহৃত হয়।
জাভাস্ক্রিপ্টে রেগুলার এক্সপ্রেশন কিভাবে তৈরি করবেন? জাভাস্ক্রিপ্টে রেগুলার এক্সপ্রেশন তৈরি করা হয় ক্লাস ব্যবহার করে RegExp অথবা আক্ষরিক অর্থে ব্যবহার করে /patrón/.
রেগুলার এক্সপ্রেশনে মডিফায়ার এবং ফ্ল্যাগের মধ্যে পার্থক্য কী? একটি রেগুলার এক্সপ্রেশনের শেষে মডিফায়ার যোগ করা হয় এবং এর আচরণ পরিবর্তন করে। ক্লাস ব্যবহার করে একটি রেগুলার এক্সপ্রেশন তৈরি করার সময় দ্বিতীয় স্ল্যাশের পরে পতাকা যোগ করা হয়। RegExp.
পদ্ধতির মধ্যে পার্থক্য কী? match() এবং পদ্ধতি test()? পদ্ধতি match() এটি একটি টেক্সট স্ট্রিং-এ একটি রেগুলার এক্সপ্রেশনের সমস্ত মিল খুঁজে পেতে ব্যবহৃত হয় এবং ফলাফল সহ একটি অ্যারে প্রদান করে। পদ্ধতিটি test() এটি একটি রেগুলার এক্সপ্রেশনের টেক্সট স্ট্রিং-এ কোন মিল আছে কিনা তা পরীক্ষা করতে ব্যবহৃত হয় এবং একটি বুলিয়ান মান প্রদান করে।
রেগুলার এক্সপ্রেশনে গ্রুপ ব্যবহার করে আমি কীভাবে নির্দিষ্ট মান ক্যাপচার করতে পারি? গ্রুপ ( ) একটি নিয়মিত অভিব্যক্তিতে আপনাকে নির্দিষ্ট উপ-অভিব্যক্তি ক্যাপচার করতে দেয়। তারপর আপনি রেফারেন্স ব্যবহার করে এই গোষ্ঠীগুলিকে উল্লেখ করতে পারেন \1, \2ইত্যাদি
জাভাস্ক্রিপ্টে রেগুলার এক্সপ্রেশন নিয়ে কাজ করার জন্য আমি কোন পদ্ধতি ব্যবহার করতে পারি? জাভাস্ক্রিপ্টে রেগুলার এক্সপ্রেশন নিয়ে কাজ করার জন্য কিছু কার্যকর পদ্ধতি হল match(), replace(), split() y test(). এই প্রতিটি পদ্ধতির নিজস্ব উদ্দেশ্য রয়েছে এবং আপনার নির্দিষ্ট চাহিদা অনুসারে ব্যবহার করা যেতে পারে।
উপসংহার
জাভাস্ক্রিপ্টে টেক্সট নিয়ে কাজ করার জন্য রেগুলার এক্সপ্রেশন একটি শক্তিশালী টুল। রেগুলার এক্সপ্রেশনের মৌলিক বিষয় , সিনট্যাক্স এবং উন্নত কৌশলগুলো বুঝতে পারলে আপনি দক্ষতার সাথে ও নির্ভুলভাবে টেক্সট স্ট্রিং অনুসন্ধান, প্রতিস্থাপন এবং পরিবর্তন করতে পারবেন। সাধারণ ম্যাচিং থেকে শুরু করে মডিফায়ার, গ্রুপ এবং অন্যান্য দরকারি মেথড ব্যবহার করা পর্যন্ত, আপনি শিখেছেন কীভাবে আপনার জাভাস্ক্রিপ্ট প্রজেক্টে রেগুলার এক্সপ্রেশনের সর্বোচ্চ ব্যবহার করতে হয়।
নিয়মিত অভিব্যক্তির সাথে আপনার বোধগম্যতা এবং পরিচিতি জোরদার করার জন্য বিভিন্ন প্যাটার্ন এবং কেস ব্যবহার করে অনুশীলন এবং পরীক্ষা করতে ভুলবেন না। আপনার কোডের দক্ষতা এবং মান উন্নত করতে রেগুলার এক্সপ্রেশন ব্যবহার করতে দ্বিধা করবেন না!