繁体   English   中英

Java正则表达式模式匹配长度

[英]Java regex pattern matching length

我输入的字符串为

input = "AAA10.50.30.20"

input.replaceAll("10.([01]?\\d\\d?|2[0-4]\\d|25[0-5]).([01]?\\d\\d?|2[0-4]\\d|25[0-5]).([01]?\\d\\d?|2[0-4]\\d|25[0-5])",
                        "X");

输出为: "AAAX"

但是我希望输出为"AAAXXXXXXXXXXX"

它应将IP替换为多个'X' ,这相当于IP地址中的字符数

如果只想用X替换所有数字和点,则调用str.replaceAll("\\\\d|\\\\.", "X") 如果要匹配确切的模式,请使用类似

str.replaceAll("(?:\\d{1,3}\\.){3}\\d{1,3}", "X")
String input =  "AAA10.50.30.20";
Pattern p = p = Pattern.compile("10.([01]?\\d\\d?|2[0-4]\\d|25[0-5]).([01]?\\d\\d?|2[0-4]\\d|25[0-5]).([01]?\\d\\d?|2[0-4]\\d|25[0-5])");
Matcher m = p.matcher(input);
String result = input;
while(m.find()){
    char[] replacement = new char[m.end()-m.start()];
    Arrays.fill(replacement, 'X');
    result = result.substring(0, m.start())
        + new String(replacement)
        + result.substring(m.end());
}
return result;

问题是您用正则表达式搜索IP地址。 这给您1个匹配项-IP地址。 然后,将其替换为X,从而获得AAAX。 如何获取正则表达式匹配的字符串,然后将所有数字替换为X呢?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM