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

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

एक IP एड्रेस दिया गया है, कार्य इस IP एड्रेस को मान्य करना और ReGex (रेगुलर एक्सप्रेशन) की मदद से जांचना है कि यह IPv4 है या नहीं। यदि 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"

आउटपुट -

"नहीं"

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

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

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

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

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

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

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

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

[Abc]+

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

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

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

  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