[英]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.