কম্পিউটার

C++ এ ReGex প্যাটার্ন ব্যবহার করে IPv4 ঠিকানা যাচাই করুন


একটি আইপি ঠিকানা দেওয়া, কাজটি হল এই আইপি ঠিকানাটি যাচাই করা এবং এটি আইপিভি 4 কিনা তা ReGex(রেগুলার এক্সপ্রেশন) এর সাহায্যে পরীক্ষা করা। যদি IP ঠিকানাটি বৈধ হয় তাহলে "IPv4 ঠিকানা" প্রিন্ট করুন অন্যথায় "Not" প্রিন্ট করুন।

একটি বৈধ IPv4 ঠিকানা হল "X1.X2.X3.X4" আকারে একটি IP যেখানে 0 <=Xi <=255 এবং Xi তে অগ্রণী শূন্য থাকতে পারে না৷ উদাহরণস্বরূপ, "192.168.1.1" এবং "192.168.1.0" হল বৈধ IPv4 ঠিকানা কিন্তু "192.168.01.1", যখন "192.168.1.00" এবং "192.168@1.1" হল অবৈধ IPv4 ঠিকানা৷ উদাহরণস্বরূপ,

ইনপুট-1

IP= “172.15.254.2”

আউটপুট

“IPv4”

ব্যাখ্যা − এটি একটি বৈধ IPv4 ঠিকানা, “IPv4” ফেরত দিন।

ইনপুট-2

IP= “312.25.12.1”

আউটপুট

“Not”

ব্যাখ্যা − এটি একটি বৈধ IPv4 ঠিকানা নয়, “না” ফেরত দিন।

এই সমস্যা সমাধানের পদ্ধতি

প্রদত্ত IP ঠিকানাটি IPv4 কিনা তা পরীক্ষা করতে আমরা ReGex ব্যবহার করি। একটি ReGex হল একটি অভিব্যক্তি যাতে অক্ষরের একটি ক্রম থাকে যা একটি নির্দিষ্ট প্যাটার্নকে সংজ্ঞায়িত করে। এই প্যাটার্নগুলিকে একটি স্ট্রিং এর প্যাটার্নের সাথে মেলাতে অ্যালগরিদমে ব্যবহার করা যেতে পারে। এটি ইনপুট বৈধকরণের জন্যও ব্যাপকভাবে ব্যবহৃত হয়৷

রেঞ্জ স্পেসিফিকেশন − আমরা সহজ উপায়ে নিদর্শনগুলি তৈরি করতে অক্ষরগুলি নির্দিষ্ট করতে পারি। অক্ষর ব্যবহার করে পরিসীমা নির্দিষ্ট করতে, আমরা ‘[ ]’ বন্ধনী ব্যবহার করতে পারি।

অক্ষর নির্দিষ্ট করা − উপরের অভিব্যক্তিটি একটি খোলার বন্ধনী এবং রেজেক্স হিসাবে a থেকে z, 'A' থেকে 'Z', এবং '0' থেকে '9' পরিসরের একটি সংখ্যা নির্দেশ করে। [a-z], [A-Z] এবং [0-9]।

পুনরাবৃত্ত প্যাটার্ন − একটি এক্সপ্রেশন মডিফায়ার হতে পারে "+" যা একটি প্যাটার্নের ঘটনার সাথে এক বা একাধিকবার মিল করার পরামর্শ দেয় বা এটি "*" হতে পারে যা একটি প্যাটার্ন শূন্য বা তার বেশি বার হওয়ার সাথে মিল করার পরামর্শ দেয়৷

অভিব্যক্তি [a-z]* একটি ফাঁকা স্ট্রিংয়ের সাথে মিলবে।

আপনি যদি এক বা একাধিক বার মেলে অক্ষরের একটি গ্রুপ নির্দিষ্ট করতে চান, তাহলে আপনি নিম্নোক্তভাবে বন্ধনী ব্যবহার করতে পারেন -

[Abc]+

এই সমস্যা সমাধানের পন্থা নিচে দেওয়া হল,

  • একটি আইপি ঠিকানা উল্লেখ করে একটি স্ট্রিং ইনপুট নিন।

  • একটি স্ট্রিং ফাংশন বৈধআইপিএড্রেস(স্ট্রিং আইপি) একটি আইপি ঠিকানা ইনপুট হিসাবে নেয় এবং ইনপুট স্ট্রিংটি বৈধ কিনা তা পরীক্ষা করে। যদি এটি বৈধ হয় তবে "IPv4" ফেরত দিন অন্যথায় "আইপি ঠিকানা নয়" ফেরত দিন।

  • IPv4 ঠিকানার জন্য একটি regex প্যাটার্ন তৈরি করা হচ্ছে। যেহেতু একটি IPv4 ঠিকানায় 4টি ক্ষেত্র রয়েছে যেখানে প্রতিটি ক্ষেত্রের মান 0-255 এর মধ্যে রয়েছে। একটি IPv4 ঠিকানা দেখতে XXX.XXX.XXX.XXX৷

    এর মতো৷
  • একটি বৈধ IPv4 ঠিকানা পরিসরে হতে পারে (([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9] ]|25[0- 5])\\.){3} যার মধ্যে প্রথম সংখ্যাটি 0-9, দ্বিতীয় 1-9 এবং তৃতীয় সংখ্যাটি 0-9 এর মধ্যে থাকবে৷

  • একইভাবে, দ্বিতীয় ক্ষেত্রের জন্য প্রথম অক্ষরটি 100-199-এর পরিসরে হবে, এইভাবে রেজেক্স প্যাটার্ন হবে ‘1[0-9]-0-9]’

  • পরবর্তী ক্ষেত্রের জন্য, অঙ্কটি 200-249-এর মধ্যে থাকবে। এইভাবে রেজেক্স প্যাটার্ন হবে ‘2[0-4][0-9]’ যা নিশ্চিত করে যে পরিসরটি 255-এর বেশি একটি সংখ্যা অতিক্রম করবে না।

  • শেষ যেটি পরের ক্ষেত্রটিতে 250-255 এর রেঞ্জের সংখ্যা রয়েছে তাই রেজেক্স প্যাটার্নটি 25[0-5] হবে।

উদাহরণ

#include<bits/stdc++.h>
using namespace std;
string validIPAddress(string IP) {
   regex ipv4("(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0- 9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])");
   if(regex_match(IP, ipv4))
      return "IPv4";
   else
      return "Not";
}
int main(){
   string IP= “172.16.254.1”;
   string ans= validIPAddress(IP);
   cout<<ans<<endl;
   return 0;
}

আউটপুট

উপরের কোডটি চালানোর ফলে আউটপুট তৈরি হবে,

IPv4

যেহেতু ইনপুট আইপি ঠিকানাটি একটি বৈধ আইপি ঠিকানা, তাই আমরা "IPv4" ফেরত দেব।


  1. C++ এ অ্যান্ড্রয়েড আনলক প্যাটার্ন

  2. কিভাবে C# এ একটি ইমেল ঠিকানা যাচাই করবেন?

  3. C# এ আইপি ঠিকানা যাচাই করুন

  4. Python Regex ব্যবহার করে একটি প্রদত্ত স্ট্রিং-এ “1(0+)1”-এর সমস্ত প্যাটার্ন খুঁজুন