簡體   English   中英

如何使用RegEx提取字符串的IP

[英]How to extract the IP of the string using RegEx

如何使用RegEx提取下面的字符串的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+)\]"

澄清......你的工作不起作用的原因是因為你只是匹配. []里面。 單身. 只匹配一個字符。 您可以添加* (零或更多)或+ (一個或多個)以使其工作。 此外,括號周圍: () ,意味着你可以直接從第二項只提取IP地址MatchCollection

如果您將模式切換為

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

您將能夠匹配地址字符串,即使它有錯誤(例如包含非數字,沒有足夠的點等)。 你很可能會結束反正驗證代碼的地址,所以這可能是一個好主意,抓住什么是打算用來作為一個IP地址,在代碼中明確地驗證它,並產生一個更有意義的錯誤消息。

試試這個:

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

您可以使用正則表達式進行分組:

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

它將在“IP”組中返回結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM