0

arraylistに保存されているIPリストとIPを照合したいのですが、この形式です 65.232.211.[001-175]

例えば。68.232.211.133一致する必要があります一致し 68.232.211.199ない

このシナリオでは定期的に表現したいのですが、どうなるかわかりません。試しましたが、正しい答えが得られませんでした。助けてください。

4

1 に答える 1

1

次のようなものを使用できます68\\.232\\.211\\.0*([1-9][0-9]?|1[0-6][0-9]|17[0-5])。最後の部分は、後の数値範囲と一致する必要があります(Regex_For_Rangeの厚意による)。

正規表現のピリオド文字は特殊文字 (任意の文字を表す) であるため、エスケープする必要があります。これは、次のようにスラッシュを追加することによって行われます\.。C# を使用しているため (そう思われます)、スラッシュも C# 言語の特殊文字であるため、エスケープする必要があります。

別の方法として (上記よりも優れています)、次の正規表現を使用して IP を 2 つに分割し、必要な検証を行うこともできます^([\d.]+?)\.(\d+)$。この正規表現は 2 つのグループを生成するため68.232.211.133、例として挙げると、 と が生成68.232.211され133ます。

上記により、IP の最初の部分を文字列として一致させることができ、IP の最後のセクションを取得して数値に変更し、数学演算子を使用して範囲チェックを実行できます。

私の意見では、(私の意見では) 保守が容易であるため、2 番目のアプローチを優先する必要があります。

于 2012-07-20T09:52:25.093 に答える