【问题标题】:java regex to mask ip addressjava正则表达式来屏蔽IP地址
【发布时间】:2014-08-27 02:21:34
【问题描述】:

我想编写java程序来屏蔽输入字符串中存在的IP地址

例如输入字符串是“AAA192.168.110.*BBBB10.*”

条件:将ip地址替换为'X'字符

我想输出为 AAAXXXXXXXXXXXXXXXBBBXXXX

我尝试解析字符串以替换 IP 地址,但我无法将“*”映射为正则表达式。

有人可以帮我编写正则表达式来替换字符串中的 IP 地址吗? 注意:要替换的字符数('X')等于ip地址中的字符数

例如 10.* 用 XXXX 替换

IP地址可能还有其他数字:

例如“AAAA1710.20.*”。这里要屏蔽的 IP 地址是“10.20.*”。所以输出应该是 “AAAA17XXXXXXX”

所以它应该只对需要屏蔽的 ip 进行屏蔽。所以对于 "AAA1710.20.*" ,它应该只删除 "10.20.*"

需要屏蔽的 IP 地址将作为输入与要解析的输入字符串一起提供。

对于上面的示例,要解析的 ip 地址将是“10.20.*”

下面的代码没有给我所需的输出:

字符串输入 = "AAAA99192.168.10.*CCCCCDDD10.*";

字符串 m = input.replaceAll("[192.168.10.*]", "X").replace("[10.*]", "Y");

System.out.println(m);

//输出为 AAAAXXXXXXXXXXXXXXXCCCCCDDDXXXX 不正确。它取代了 99 也是不正确的。而且它应该用没有发生的'YYYY'替换10.*

【问题讨论】:

    标签: java regex ip-address mask


    【解决方案1】:

    您可以使用下面的代码来屏蔽数字和点,

    String s = "AAA2110.20.*BB192.128.*";
    String m = s.replaceAll("10\\.20\\.\\*", "XXXXXXX").replaceAll("192\\.128\\.\\*", "YYYYYYYYY");
    System.out.println(m);
    

    输出:

    AAA21XXXXXXXBBYYYYYYYYY
    

    IDEONE

    【讨论】:

    • 当我尝试使用以下代码删除 IP 地址时。它没有给我要求输出 String input = "AAAA99192.168.10.*CCCCCDDD10.*";字符串 m = input.replaceAll("[192.168.11.*]", "X").replace("[10.*]", "Y"); System.out.println(m);
    • 你能发布你试过的ideone链接吗?而且您的输入不包含11 那么它是如何被替换的?
    • 嗨阿维纳什,感谢您的回复。我的要求是,它应该只删除 IP 地址,而不是其他数字:所以如果输入是 AAA2110.20.*BB192.128.* 并且要掩码的 IP 地址是 10.20.* 和 192.128.* 那么它首先会输出应该是 AAA21XXXXXXXBB192.128.* 删除 10.20.* 并且在下一步它应该删除 192.128.* 所以输出应该是 AAA21XXXXXXXBBXXXXXXXXX
    • 数字 110 属于 ipadress 范围之一,那么您为什么要尝试掩盖从 10 开始的数字,为什么不使用 110?
    • 因为用户输入将决定要屏蔽的 IP 地址所以对于输入 AAA2110.20.*BB192.128.* ,可能有其他数字以及 IP 地址和要求是屏蔽 IP 地址 10.20.* 而不是 110.20.*
    【解决方案2】:

    你可以使用这个正则表达式:

    "([0-9]{1,3}\\.){3}[0-9]{1,3}"
    

    查找IP地址。

    【讨论】:

      猜你喜欢
      • 2019-06-03
      • 1970-01-01
      • 1970-01-01
      • 2012-05-17
      • 2011-06-20
      • 2017-03-15
      • 2015-11-22
      相关资源
      最近更新 更多