正規表現を使用して以下の文字列の IP を抽出する方法は?
... sid [1544764] srv [CFT256] remip [10.0.128.31] fwf []...
以下のコードを試しましたが、期待値を返しませんでした:
string pattern = @"remip\ \[.\]"; MatchCollection mc = Regex.Matches(stringToSearch, pattern );
前もって感謝します。
これを試して:
@"remip \[(\d+\.\d+\.\d+\.\d+)\]"
明確にするために...あなたが機能しない理由は、 and.
内でのみ一致しているためです。singleは 1 文字のみに一致します。(ゼロ以上)または(1つ以上)を追加して、機能させることができます。さらに、括弧で囲む:と, の 2 番目の項目から IP アドレスだけを直接抽出できることを意味します。[
]
.
*
+
(
)
MatchCollection
パターンを切り替えると
string pattern = @"remip\s*\[[^\]]*\]";
アドレス文字列にエラーがある場合でも (たとえば、数字以外が含まれている、ドットが足りないなど)、アドレス文字列に一致させることができます。とにかくコードでアドレスを検証することになる可能性が高いため、IP アドレスとして使用することを意図したものを取得し、コードで明示的に検証し、より意味のあるエラー メッセージを生成することをお勧めします。
正規表現でグループ化を使用できます。
@"remip\s\[(?<IP>\d+.\d+.\d+.\d+)\]"
「IP」グループで結果を返します
これを試してください:
string pattern = @"remip\s\[.+?\]";
MatchCollection mc = Regex.Matches(stringToSearch, pattern );