1

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

例如

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。

4

3 回答 3

1

这个SO question 应该为您指明如何匹配主机名或 IPV4 地址。对于 IPV6,请查看 SO 上的这个问题。

于 2013-10-12T03:51:42.627 回答
0

如果 IP 总是在该行的 and 你可以这样做

String ip = str.substring(str.lastIndexOf(' ') + 1);
于 2013-10-12T03:54:10.983 回答
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

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

于 2013-10-12T06:34:31.620 回答