রেগুলার এক্সপ্রেশন কী?

একটি রেগুলার এক্সপ্রেশন (regex) হলো অক্ষরের একটি ক্রম যা একটি সার্চ প্যাটার্ন সংজ্ঞায়িত করে। মূলত আনুষ্ঠানিক ভাষা তত্ত্বের জন্য তৈরি হলেও, রেগুলার এক্সপ্রেশন এখন প্রায় প্রতিটি প্রোগ্রামিং ভাষা এবং টেক্সট-প্রসেসিং টুলে string ম্যাচ করতে, সার্চ করতে এবং পরিবর্তন করতে ব্যবহৃত হয়। [a-z]+@[a-z]+\.com এর মতো একটি প্যাটার্ন একটি সাধারণ ইমেইল ঠিকানার কাঠামো বর্ণনা করে — অক্ষর, তারপর একটি @ চিহ্ন, আরও অক্ষর, একটি ডট এবং আক্ষরিক string "com।"

সার্চ করার পাশাপাশি, রেগুলার এক্সপ্রেশন ডেটা তৈরির ব্লুপ্রিন্ট হিসেবেও কাজ করতে পারে। ম্যাচিং প্রক্রিয়াটি উল্টে দিয়ে, একটি regex ইঞ্জিন নির্দিষ্ট প্যাটার্ন অনুযায়ী র‍্যান্ডম string তৈরি করতে পারে। এটি সফটওয়্যার টেস্টিং, প্রোটোটাইপিং এবং প্রকৃত ব্যবহারকারীর তথ্যের উপর নির্ভর না করে বাস্তবসম্মত দেখতে মক ডেটা দিয়ে ডেটাবেস পূরণ করার জন্য বিশেষভাবে উপযোগী।

টুলের বিবরণ

এই টুলটি আপনার দেওয়া যেকোনো রেগুলার এক্সপ্রেশনের সাথে মিলে যায় এমন র‍্যান্ডম string তৈরি করে। একটি regex প্যাটার্ন লিখুন — অথবা বিল্ট-ইন প্রিসেট থেকে বেছে নিন — এবং তাৎক্ষণিকভাবে ১,০০০ পর্যন্ত মিলে যাওয়া মান তৈরি করুন। এটি ক্যারেক্টার ক্লাস, কোয়ান্টিফায়ার, গ্রুপ, অল্টারনেশন এবং ব্যাকরেফারেন্স সহ সমস্ত স্ট্যান্ডার্ড regex সিনট্যাক্স সমর্থন করে। আউটপুট সরাসরি টেস্ট ফিক্সচার, সিড ডেটা বা ভ্যালিডেশন স্ক্রিপ্টের ইনপুট হিসেবে ব্যবহার করা যায়।

বৈশিষ্ট্যসমূহ

  • সাধারণ ফরম্যাটের জন্য বিল্ট-ইন প্রিসেট: ইমেইল, IPv4, UUID, মার্কিন ফোন নম্বর, তারিখ, hex রঙ, লাইসেন্স প্লেট এবং MAC ঠিকানা
  • কাস্টম regex ইনপুট যা সম্পূর্ণ JavaScript রেগুলার এক্সপ্রেশন সিনট্যাক্স গ্রহণ করে
  • প্রতিটি রানে ১ থেকে ১,০০০ পর্যন্ত তৈরি মানের সংখ্যা নির্ধারণযোগ্য
  • অতিরিক্ত দীর্ঘ string তৈরি রোধ করতে সীমাহীন কোয়ান্টিফায়ার (+, *, {n,}) কতবার প্রসারিত হবে তা সীমিত করার জন্য সর্বোচ্চ পুনরাবৃত্তি নিয়ন্ত্রণ
  • শুধুমাত্র অনন্য মান মোড যা আউটপুট থেকে ডুপ্লিকেট সরিয়ে দেয় এবং প্যাটার্নের এন্ট্রপি যথেষ্ট স্বতন্ত্র মান তৈরি করতে খুব কম হলে সতর্ক করে

ব্যবহারের ক্ষেত্র

  • সফটওয়্যার টেস্টিং: প্রকৃত ব্যবহারকারীর তথ্য প্রকাশ না করে স্বয়ংক্রিয় টেস্ট স্যুটের জন্য টেস্ট ফিক্সচার বা সিড ডেটা হিসেবে ব্যবহার করতে শত শত বৈধ দেখতে ইমেইল ঠিকানা, UUID বা IP ঠিকানা তৈরি করুন।
  • ডেটাবেস সিডিং: কলাম কনস্ট্রেইন্ট এবং ভ্যালিডেশন নিয়ম মেনে চলে এমন বাস্তবসম্মত মক ডেটা দিয়ে ডেভেলপমেন্ট বা স্টেজিং ডেটাবেস দ্রুত পূরণ করুন।
  • Regex শেখা: একটি প্যাটার্ন লিখে এবং তাৎক্ষণিকভাবে দেখে যে এটি কোন string তৈরি করতে পারে তা দিয়ে রেগুলার এক্সপ্রেশন সিনট্যাক্স নিয়ে পরীক্ষা-নিরীক্ষা করুন, যা কোয়ান্টিফায়ার, ক্যারেক্টার ক্লাস এবং গ্রুপিং বুঝতে সহজ করে তোলে।

বিকল্পগুলোর ব্যাখ্যা

বিকল্প বিবরণ
প্রিসেট সাধারণ ডেটা ফরম্যাটের জন্য একটি বিল্ট-ইন প্যাটার্ন বেছে নিন, অথবা নিজের regex লিখতে "Custom" বেছে নিন। একটি প্রিসেট বেছে নিলে স্বয়ংক্রিয়ভাবে regex প্যাটার্ন ফিল্ড পূরণ হয়ে যায়।
Regex প্যাটার্ন ডেটা তৈরি করতে ব্যবহৃত রেগুলার এক্সপ্রেশন। ক্যারেক্টার ক্লাস ([a-z]), কোয়ান্টিফায়ার ({3,8}, +, *), গ্রুপ এবং অল্টারনেশন ((com|net|org)), এবং বিশেষ token (\d, \w) সমর্থন করে।
সংখ্যা কতটি string তৈরি করতে হবে, ১ থেকে ১,০০০ এর মধ্যে।
সর্বোচ্চ পুনরাবৃত্তি সীমাহীন কোয়ান্টিফায়ারের প্রসারণ সীমিত করে। উদাহরণস্বরূপ, সর্বোচ্চ পুনরাবৃত্তি ১০ সেট করলে, [a-z]+ প্যাটার্নটি সর্বোচ্চ ১০টি অক্ষরের string তৈরি করবে। পরিসর: ১–১০০।
শুধুমাত্র অনন্য মান সক্রিয় করলে, আউটপুটে কোনো ডুপ্লিকেট string দেখা যাবে না। যদি প্যাটার্নটি যথেষ্ট অনন্য মান তৈরি করতে না পারে, তাহলে প্রকৃত তৈরি সংখ্যাসহ একটি সতর্কতা দেখানো হয়।

টিপস

  • regex প্যাটার্ন কীভাবে তৈরি ডেটায় রূপান্তরিত হয় তা শিখতে একটি প্রিসেট দিয়ে শুরু করুন এবং সেটি পরিবর্তন করুন।
  • যদি নির্দিষ্ট দৈর্ঘ্যের আউটপুট প্রয়োজন হয়, তাহলে {5,10} এর মতো রেঞ্জের পরিবর্তে {8} এর মতো সঠিক কোয়ান্টিফায়ার ব্যবহার করুন।
  • তৈরি string ছোট এবং পাঠযোগ্য রাখতে + বা * ব্যবহার করার সময় সর্বোচ্চ পুনরাবৃত্তির মান কমিয়ে দিন।
  • এমন আইডেন্টিফায়ার বা কী তৈরি করার সময় অনন্য মোড সক্রিয় করুন যা পুনরাবৃত্তি হওয়া উচিত নয়, তবে অনন্যতার সীমায় পৌঁছানো এড়াতে যথেষ্ট বৈচিত্র্যসহ একটি প্যাটার্ন ব্যবহার করুন।

সাধারণ জিজ্ঞাসা

আমি কি lookahead বা lookbehind ব্যবহার করতে পারি? জেনারেটরটি randexp.js লাইব্রেরির উপর ভিত্তি করে তৈরি, যা বেশিরভাগ JavaScript regex বৈশিষ্ট্য সমর্থন করে। Lookahead এবং lookbehind তৈরির জন্য সমর্থিত নয় কারণ এগুলো অক্ষরের বিষয়বস্তু সংজ্ঞায়িত করে না।

কেন আমি অনুরোধ করা সংখ্যার চেয়ে কম ফলাফল পেলাম? "শুধুমাত্র অনন্য মান" সক্রিয় থাকলে, প্যাটার্নটি অনুরোধ করা সংখ্যক স্বতন্ত্র string তৈরি করার জন্য যথেষ্ট সম্ভাব্য পারমুটেশন নাও থাকতে পারে। ক্যারেক্টার ক্লাস প্রসারিত করার বা কোয়ান্টিফায়ার রেঞ্জ বাড়ানোর চেষ্টা করুন।

আউটপুট কি সত্যিই র‍্যান্ডম? আউটপুট সিউডো-র‍্যান্ডম। প্রতিটি রান ভিন্ন ফলাফল তৈরি করে, তবে এই র‍্যান্ডমনেস ক্রিপ্টোগ্রাফিকভাবে নিরাপদ নয়। পাসওয়ার্ড বা নিরাপত্তা token তৈরি করতে এই টুলটি ব্যবহার করবেন না।