我想将使用正则表达式取出的字符串做处理后返回给原字符串,看正文

    private static String getBestMsg(String msg) {
        Pattern pa = Pattern.compile("\\^\\^[A-Za-z0-9]+\\|{8}");  
        Matcher matcher = pa.matcher(msg);
        while(matcher.find()) {
            String a = matcher.group();
            System.out.println(a);
        }
        return msg;
    }

通过上面我取到

^^0212H||||||||
^^0212H||||||||
^^0212H|||||||| 

我想将H去掉
^^0212||||||||

返回给原字符串,使原字符串中也没有H
新人,有思路,但不知道具体该怎么写

使用替换嘛,将'H' 替换成 ''

再用正则表达式(字符串函数)对H进行处理,返回字符串就行了!!!给分呦,,老哥

正则表达式对H进行处理,返回字符串

return msg.replace(“H”,string.empty)

在循环里面的a字符串的定义下加上a=a.replaceFirst("H", "");这句,就好了。

如果是去处所有的字母就是 return msg.replaceAll("[a-zA-Z]",string.empty);

不太明白你的意思,能够在说明一下么

public static void main(String[] args) {

    String msg = "^^0212H||||||||";
        Pattern pa = Pattern.compile("(\\^\\^[A-Za-z0-9]+)[A-Za-z]+(\\|{8})");  
        Matcher matcher = pa.matcher(msg);
        while(matcher.find()) {
            //return matcher.group(1)+matcher.group(2);
            System.out.println(matcher.group(1)+matcher.group(2));
        }

}![图片说明](https://img-ask.csdn.net/upload/201801/20/1516380168_584424.png)

分组捕获,然后替换掉拼接起来,就是你对你所有的内容形成一个分组:(.*)(\^\^[A-Za-z0-9]+\|{8}),这样你处理的时候第一个分组直接拼接,第二个分组处理后拼接,这是我处理这种问题的方案

要分成多次拼接的,一步容易出错。

 public static void main(String[] args) {
        String msg = "^^0212H||||||||";

        Pattern p = Pattern.compile("\\^\\^[A-Za-z0-9]+\\|{8}");
        Matcher m = p.matcher(msg);
        StringBuffer sb = new StringBuffer();
        while (m.find()) {
            m.appendReplacement(sb, m.group().replace("H", ""));
        }
        m.appendTail(sb);
        System.out.println(sb.toString());

    }