正则表达式从行中提取ip地址

时间:2013-10-12 03:45:53

标签: java regex

我想从每一行中提取IPV4地址。可能有有效或无效的IP地址,我想将它们全部打印出来。

e.g。

Failed service from 212.345.23.234 
Successfully logged in at 13:09:89 from 12.34.76.54 
Ping from 123.567.42.56
.....
.....

Output:
212.345.23.234
12.34.76.54
123.567.42.56
.....

我需要一个正则表达式,我可以像currentLine.contains(PATTERN)一样直接针对每一行。我不想将字符串标记为标记并针对每个标记运行RE。

3 个答案:

答案 0 :(得分:1)

This所以问题应该指明你如何匹配主机名或IPV4地址。对于IPV6,请查看SO上的this问题。

答案 1 :(得分:0)

如果IP始终位于行和行中,则可以这样做

String ip = str.substring(str.lastIndexOf(' ') + 1);

答案 2 :(得分:0)

匹配ip与正则表达式...我不得不自己滚动。它似乎适用于所有IP范围,虽然繁琐。让我知道,如果它失败了,因为我需要更新我自己的:

\b(?:(?:2[0-5][0-5]|1[0-9][0-9]|1[0-9]|[1-9]{1,2})\.){3}(?:2[0-5][0-5]|1[0-9][0-9]|1[0-9]|[1-9]{1,2})\b

这不会提取任何东西,只是匹配。由你来做你需要的。