【问题标题】:Regular expression to extract ip address from lines [closed]从行中提取ip地址的正则表达式[关闭]
【发布时间】:2013-10-12 03:45:52
【问题描述】:

我想从每一行中提取 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。

【问题讨论】:

标签: java regex


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    用正则表达式匹配 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
    

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2011-08-17
        • 2016-08-28
        • 1970-01-01
        • 2015-12-17
        • 2015-09-19
        • 2011-06-20
        相关资源
        最近更新 更多