Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में ReGex पैटर्न का उपयोग करके IPv4 पते की पुष्टि करें

एक आईपी पते को देखते हुए, कार्य इस आईपी पते को मान्य करना है और यह जांचना है कि यह आईपीवी 4 है या नहीं, रेगेक्स (रेगुलर एक्सप्रेशन) की मदद से। यदि IP पता मान्य है तो "IPv4 पता" प्रिंट करें अन्यथा "नहीं" प्रिंट करें।

एक मान्य 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 का उपयोग करते हैं। एक रेगेक्स एक अभिव्यक्ति है जिसमें वर्णों का एक क्रम होता है जो एक विशिष्ट पैटर्न को परिभाषित करता है। एक स्ट्रिंग में पैटर्न से मेल खाने के लिए इन पैटर्न का उपयोग एल्गोरिदम में किया जा सकता है। यह इनपुट सत्यापन के लिए भी व्यापक रूप से उपयोग किया जाता है।

श्रेणी विशिष्टता - हम पैटर्न को सरलतम तरीके से बनाने के लिए वर्ण निर्दिष्ट कर सकते हैं। वर्णों का उपयोग करके श्रेणी निर्दिष्ट करने के लिए, हम '[ ]' कोष्ठक का उपयोग कर सकते हैं।

वर्ण निर्दिष्ट करना - उपरोक्त व्यंजक एक प्रारंभिक कोष्ठक और एक अंक को a से z , 'A' से 'Z', और '0' से '9' तक रेगेक्स के रूप में दर्शाता है। [ए-जेड], [ए-जेड] और [0-9]।

दोहराए गए पैटर्न - एक अभिव्यक्ति संशोधक "+" हो सकता है जो एक या अधिक बार पैटर्न की घटना से मेल खाने का सुझाव देता है या यह "*" हो सकता है जो शून्य या अधिक बार पैटर्न की घटना से मेल खाने का सुझाव देता है।

व्यंजक [a-z]* एक रिक्त स्ट्रिंग से मेल खाएगा।

यदि आप एक या अधिक बार मिलान करने के लिए वर्णों के समूह को निर्दिष्ट करना चाहते हैं, तो आप निम्नानुसार कोष्ठक का उपयोग कर सकते हैं -

[Abc]+

इस समस्या को हल करने का तरीका निम्नलिखित है,

  • एक IP पता निर्दिष्ट करने वाली एक स्ट्रिंग इनपुट करें।

  • एक स्ट्रिंग फ़ंक्शन वैधआईपीएड्रेस (स्ट्रिंग आईपी) इनपुट के रूप में एक आईपी पता लेता है और जांचता है कि इनपुट स्ट्रिंग मान्य है या नहीं। यदि यह मान्य है तो "आईपीवी 4" लौटाएं अन्यथा "आईपी पता नहीं" लौटाएं।

  • IPv4 पते के लिए एक रेगेक्स पैटर्न बनाना। चूंकि 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

चूंकि इनपुट आईपी पता एक मान्य आईपी पता है, इसलिए हम "आईपीवी4" लौटाएंगे।


  1. C++ में Android अनलॉक पैटर्न

    मान लीजिए हमारे पास एक एंड्रॉइड 3x3 कुंजी लॉक स्क्रीन और दो पूर्णांक एम और एन है, एम और एन के मान 1 ≤ एम ≤ एन ≤ 9 की सीमा में हैं, हमें एंड्रॉइड लॉक स्क्रीन के अनलॉक पैटर्न की कुल संख्या की गणना करनी है, जो कि न्यूनतम m कुंजियाँ और अधिकतम n कुंजियाँ शामिल हैं। नियम इस प्रकार है, प्रत्येक पैटर्न को

  1. सी # में आईपी पता मान्य करें

    एक आईपी पता एक इंटरनेट प्रोटोकॉल पता है जो कंप्यूटर नेटवर्क पर प्रत्येक डिवाइस को निर्दिष्ट संख्याओं की एक श्रृंखला है। C# में, नेमस्पेस System.Net में क्लास IPAddress क्लास IP एड्रेस से संबंधित है। एक प्रोग्राम जिसका उपयोग किसी आईपी पते को मान्य करने के लिए किया जाता है, वह इस प्रकार दिया जाता है

  1. पायथन रेगेक्स का उपयोग करके किसी दिए गए स्ट्रिंग में "1(0+)1" के सभी पैटर्न खोजें

    इस ट्यूटोरियल में, हम एक प्रोग्राम लिखने जा रहे हैं जो regexes का उपयोग करके एक स्ट्रिंग में 1(0+1) की सभी घटनाओं को ढूंढता है। . हमारे पास पायथन में एक री मॉड्यूल है जो हमें रेगुलर एक्सप्रेशन के साथ काम करने में मदद करता है। आइए एक नमूना मामला देखें। Input: string = "Sample 1(0+)1 string with