Java 下面的输出是:用户客户端id=***屏蔽***。主机客户端--id=***屏蔽***。某些修复客户端num=12564

Java 下面的输出是:用户客户端id=***屏蔽***。主机客户端--id=***屏蔽***。某些修复客户端num=12564,java,regex,Java,Regex,为什么主机和用户字符串在输出中打印 import java.util.regex.Pattern; import java.util.regex.Matcher; class String_Match4 { public static void main(String args[]) { String input = "user client-id=12345.host client-id=745896.some fix client-num=12564";

为什么主机和用户字符串在输出中打印

import java.util.regex.Pattern;
import java.util.regex.Matcher;

class String_Match4 
{
    public static void main(String args[])
    {
        String input = "user client-id=12345.host client-id=745896.some fix client-num=12564";
        Pattern p1 = Pattern.compile("(client-id=)(\\d+)");
        Matcher m1 = p1.matcher(input);
        StringBuffer result = new StringBuffer();
        System.out.println(result);
        while (m1.find()) {
            m1.appendReplacement(result, m1.group(1) + "***masked***");
        }
        m1.appendTail(result);
        System.out.println(result);
    }
}

实际上,是的,您正在将它们添加到StringBuffer对象“result”中。Matcher.appendReplacement(sb,replacementString)就是这样做的。

您能用CRTL+K正确格式化代码吗?并为问题添加更多细节?你真的需要在这个问题上添加一些额外的细节,关于你正在尝试做什么,你预期会发生什么,相反发生了什么,你的问题是什么,等等。你预期的结果是什么?如果没有提供反馈,我认为以不清楚的形式结束问题是合理的。我只添加了组(1)但为什么用户和主机正在打印