如何提取使用下面的正则表达式字符串的IP?
... sid [1544764] srv [CFT256] remip [10.0.128.31] fwf []...
我想下面的代码,但没有返回预期值:
string pattern = @"remip\ \[.\]"; MatchCollection mc = Regex.Matches(stringToSearch, pattern );
提前致谢。
如何提取使用下面的正则表达式字符串的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”组返回结果