[英]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.