5

正規表現を使用して以下の文字列の IP を抽出する方法は?

... sid [1544764] srv [CFT256] remip [10.0.128.31] fwf []...

以下のコードを試しましたが、期待値を返しませんでした:

string pattern = @"remip\ \[.\]";
MatchCollection mc = Regex.Matches(stringToSearch, pattern );


前もって感謝します。

4

5 に答える 5

7

これを試して:

@"remip \[(\d+\.\d+\.\d+\.\d+)\]"

明確にするために...あなたが機能しない理由は、 and.内でのみ一致しているためです。singleは 1 文字のみに一致します。(ゼロ以上)または(1つ以上)を追加して、機能させることができます。さらに、括弧で囲む:と, の 2 番目の項目から IP アドレスだけを直接抽出できることを意味します。[].*+()MatchCollection

于 2012-05-09T15:25:20.840 に答える
4

パターンを切り替えると

string pattern = @"remip\s*\[[^\]]*\]";

アドレス文字列にエラーがある場合でも (たとえば、数字以外が含まれている、ドットが足りないなど)、アドレス文字列に一致させることができます。とにかくコードでアドレスを検証することになる可能性が高いため、IP アドレスとして使用することを意図したものを取得し、コードで明示的に検証し、より意味のあるエラー メッセージを生成することをお勧めします。

于 2012-05-09T15:36:58.657 に答える
3

正規表現でグループ化を使用できます。

@"remip\s\[(?<IP>\d+.\d+.\d+.\d+)\]"

「IP」グループで結果を返します

于 2012-05-09T15:28:29.527 に答える
2

これを試してください:

string pattern = @"remip\s\[.+?\]";
MatchCollection mc = Regex.Matches(stringToSearch, pattern );
于 2012-05-09T15:25:37.357 に答える