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

C++ में रेगेक्स पैटर्न का उपयोग करके IPv6 एड्रेस मान्य करें

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

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

इनपुट-1 -

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

आउटपुट -

"नहीं"

व्याख्या - यह मान्य IPv6 एड्रेस नहीं है, "नहीं" लौटाएं।

इनपुट-2 -

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

आउटपुट -

"IPv6"

व्याख्या - यह मान्य IPv6 एड्रेस है, "IPv6" लौटाएं।

इस समस्या को हल करने का दृष्टिकोण

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

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

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

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

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

एक्सप्रेशन [a-z]* एक ब्लैंक स्ट्रिंग से मिलान करेगा।

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

[Abc]+

इस समस्या को हल करने का दृष्टिकोण

  • एक स्ट्रिंग इनपुट लें जो IP एड्रेस निर्दिष्ट करती है।
  • एक स्ट्रिंग फ़ंक्शन validIPAddress(string IP) IP एड्रेस को इनपुट के रूप में लेता है और जांचता है कि इनपुट स्ट्रिंग मान्य है या नहीं। यदि यह मान्य है तो "IPv6" लौटाएं अन्यथा "नॉट एन IP एड्रेस" लौटाएं।
  • 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

चूंकि इनपुट IP एड्रेस मान्य IP एड्रेस नहीं है, हम "नहीं" लौटाएंगे।

  1. C++ में एंड्रॉइड अनलॉक पैटर्न - वैध पैटर्न गिनें C++ में एंड्रॉइड अनलॉक पैटर्न - वैध पैटर्न गिनें

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

  1. - C# में IP एड्रेस को मान्य करना

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

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

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