如何使用正則表達式提取下面的字符串的IP?如何使用正則表達式提取字符串的IP
... sid [1544764] srv [CFT256] remip [10.0.128.31] fwf []...
我嘗試下面的代碼,但沒有返回預期值:
string pattern = @"remip\ \[.\]"; MatchCollection mc = Regex.Matches(stringToSearch, pattern);
在此先感謝。
如何使用正則表達式提取下面的字符串的IP?如何使用正則表達式提取字符串的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+)\]"
爲了澄清......你不工作的原因是因爲你只有[
和]
內匹配.
。一個.
只匹配一個字符。您可以添加一個*
(零個或多個)或一個+
(一個或多個)以使其工作。另外,在括號中圍繞它:(
和)
,意味着您可以直接從MatchCollection
中的第二項提取IP地址。
Prob應該在'。'之前加一個反斜槓。比賽。 –
@Jon Grant,如果它是\ d {1,3}以確保它最多隻有三個字符並且至少有一個字符,會更好。 –
糟糕,斑點:) –
試試這個:
string pattern = @"remip\s\[.+?\]";
MatchCollection mc = Regex.Matches(stringToSearch, pattern);
也許'\ s *',爲了更靈活? – Vlad
您可以使用您的正則表達式分組:
@"remip\s\[(?<IP>\d+.\d+.\d+.\d+)\]"
如果切換模式將返回結果中的 「IP」 組
到
string pattern = @"remip\s*\[[^\]]*\]";
即使存在錯誤(例如錯誤),您仍然可以匹配地址字符串。包含非數字,沒有足夠的點等)。您很可能最終會驗證代碼中的地址,因此這可能是一個好主意,可以捕獲意圖將用作IP地址,在您的代碼中顯式驗證它,並生成更有意義的錯誤消息。
@「\ b \ d {1,3} \。\ d {1,3} \。\ d {1,3} \。\ d {1,3} \ b」將匹配IP地址,一般爲 –
@Andrew:那麼,這將匹配999.999.999.999以及 – Vlad
@Vlad ...是的,但使用正則表達式匹配**有效的** ip地址看起來像一個噩夢的場景,我的表情對於拉出可能的候選者非常穩固。 –