C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++のReGexパターンを使用してIPv6アドレスを検証します


IPアドレスが与えられた場合、タスクはこのIPアドレスを検証し、ReGex(正規表現)を使用してIPv6であるかどうかを確認することです。 IPアドレスが有効な場合は「IPv6アドレス」を出力し、そうでない場合は「Not」を出力します。

有効なIPv4アドレスは、「XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX」の形式のIPです。ここで、各Xi桁は16進数です。たとえば、

入力-1

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

出力

“Not”

説明 −これは有効なIPv6アドレスではないため、「Not」を返します。

入力-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].

繰り返されるパターン −式修飾子は、パターンの出現を1回以上一致させることを示唆する「+」、またはパターンの出現を0回以上一致させることを示唆する「*」にすることができます。

式[a-z]*は空白の文字列に一致します。

1回以上一致する文字のグループを指定する場合は、次のように括弧を使用できます-

[Abc]+

この問題を解決するためのアプローチは次のとおりです

  • IPアドレスを指定する文字列を入力します。

  • 文字列関数validIPAddress(string IP)は、入力としてIPアドレスを受け取り、入力された文字列が有効かどうかを確認します。有効な場合は「IPv6」を返し、そうでない場合は「IPアドレスではありません」を返します。

  • IPv6アドレスの正規表現パターンを作成します。 IPv6アドレスには8つのフィールドが含まれているため、各フィールドには16進数で表される値の数字が含まれます。 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の範囲で、2番目は16進数の英数字です。

  • 同様に、2番目のフィールドの場合、最初の文字は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アドレスではないため、「Not」を返します。


  1. C++でのAndroidのロック解除パターン

    Android 3x3キーロック画面と2つの整数mとnがあり、mとnの値が1≤m≤n≤9の範囲にあるとします。Androidロック画面のロック解除パターンの総数をカウントする必要があります。最小m個のキーと最大n個のキーで構成されます。 ルールは次のようになります。各パターンは、少なくともm個のキーと最大でn個のキーを接続する必要があります。すべてのキーは一意である必要があります。パターン内の2つの連続するキーを結ぶ線が他のキーを通過する場合、他のキーはパターン内で事前に選択されている必要があります。選択されていない、許可されていないキーをジャンプします。使用するキーの順序が重要です。

  2. Python Regexを使用して、特定の文字列内の「1(0+)1」のすべてのパターンを検索します

    このチュートリアルでは、正規表現を使用して、文字列内の1(0 + 1)のすべての出現を検出するプログラムを作成します。 。 Pythonには、正規表現を操作するのに役立つreモジュールがあります。 1つのサンプルケースを見てみましょう。 Input: string = "Sample 1(0+)1 string with 1(0+)1 unnecessary patterns 1(0+)1" Output: Total number of pattern maches are 3 ['1(0+)1', '1(0+)1', '1(0+