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

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

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

एक मान्य IPv4 पता "XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX" रूप में एक IP होता है, जहां प्रत्येक Xi अंक एक हेक्साडेसिमल अंक होता है। उदाहरण के लिए,

इनपुट-1 -

IP= “3001:0da8:82a3:0:0:8B2E:0270:7224”

आउटपुट -

“Not”

स्पष्टीकरण - यह मान्य IPv6 पता नहीं है, "नहीं" लौटाएं।

इनपुट-2 -

IP= “2001:0db8:85a3:0000:0000:8a2e:0370:7334”

आउटपुट -

“IPv6”

स्पष्टीकरण - यह एक मान्य IPv6 पता है, "IPv6" लौटाएं।

इस समस्या को हल करने का तरीका

यह जांचने के लिए कि दिया गया IP पता IPv6 है या नहीं, हम ReGex का उपयोग करते हैं। एक रेगेक्स एक अभिव्यक्ति है जिसमें वर्णों का एक क्रम होता है जो एक विशिष्ट पैटर्न को परिभाषित करता है। एक स्ट्रिंग में पैटर्न से मेल खाने के लिए इन पैटर्न का उपयोग एल्गोरिदम में किया जा सकता है। यह इनपुट सत्यापन के लिए भी व्यापक रूप से उपयोग किया जाता है।

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

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

[a-z], [A-Z] and [0-9].

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

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

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

[Abc]+

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

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

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

  • IPv6 पते के लिए एक रेगेक्स पैटर्न बनाना। चूंकि IPv6 पते में 8 फ़ील्ड होते हैं जिनमें प्रत्येक फ़ील्ड में हेक्साडेसिमल के रूप में दर्शाए गए मान अंक होते हैं। एक IPv6 पता XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX जैसा दिखता है जिसे 'कोलन' से अलग किया जाता है।

  • एक मान्य IPv6 पता सीमा में हो सकता है ([0-9a-fA-F]){1,4})\\:){7}([0-9a-fA-F]){1,4}) जिसमें पहला अंक 0-9 की सीमा में होगा, दूसरा हेक्साडेसिमल अल्फ़ान्यूमेरिक अंक है।

  • इसी तरह, दूसरे फ़ील्ड के लिए पहला वर्ण 0-9a-fA-F की सीमा में होगा, इसलिए रेगेक्स पैटर्न '[0-9a-fA-F]'

    होगा।

उदाहरण

#include<bits/stdc++.h>
using namespace std;
string validIPAddress(string IP) {
   regex ipv6("((([0-9a-fA-F]){1,4})\\:){7}([0-9a-fA-F]){1,4}");
   if(regex_match(IP, ipv6))
      return "IPv6";
   else
      return "Not";
}
int main(){
   string IP= “3001:0da8:82a3:0:0:8B2E:0270:7224”;
   string ans= validIPAddress(IP);
   cout<<ans<<endl;
   return 0;
}

आउटपुट

उपरोक्त कोड को चलाने से आउटपुट इस प्रकार उत्पन्न होगा,

Not

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


  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