如何使用正则表达式来提取字符串的IP(How to extract the IP of the st

2019-06-25 08:06发布

如何提取使用下面的正则表达式字符串的IP?

... sid [1544764] srv [CFT256] remip [10.0.128.31] fwf []...

我想下面的代码,但没有返回预期值:

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


提前致谢。

Answer 1:

试试这个:

@"remip \[(\d+\.\d+\.\d+\.\d+)\]"

为了澄清......你不工作的原因是因为你只匹配. 内的[] 。 单. 只匹配单个字符。 你可以添加一个* (零个或多个)或+ (一个或多个),使其工作。 此外,括号周围: () ,意味着你可以直接从第二项只提取IP地址MatchCollection



Answer 2:

如果您切换模式

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

你将能够匹配的地址字符串即使有错误(例如包含非数字的,没有足够的亮点等)。 你很可能会结束反正验证代码的地址,所以这可能是一个好主意,抓住什么是打算用来作为一个IP地址,在代码中明确地验证它,并产生一个更有意义的错误消息。



Answer 3:

试试这个:

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


Answer 4:

您可以使用您的正则表达式分组:

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

它将在“IP”组返回结果



文章来源: How to extract the IP of the string using RegEx
标签: c# regex string ip