解决方案 »

  1.   

    你的正则表达式写的是不对的。
    ^表示的是非,-表示得是从  到 
    所以你这种写法根本就有问题。如果你希望替换这些特殊字符,正确的做法应是
    String ends = "[@|#|$|%|^|&|*|\\-|_|,|,|¥|、|\\[|\\]]*";
      

  2.   

    本帖最后由 fudongrifdr 于 2014-08-26 09:08:23 编辑
      

  3.   

    String ends = "^[@#$%^&*-_,,¥、]*";
    这句话是以[@#$%^&*-_,,¥、]其中一个开头,肯定匹配不上,应该是"[@#$%^&*-_,,¥、]*"这个就行了吧。你可以试试
      

  4.   

    String pattern = "([-+*/^\\&\\%\\#\\$()\\]\\[])";
    String Str = "[-a+a#a$a%*&a]";
    Str = Str.replaceAll(pattern, "");
    System.out.println("str=["+Str+"]");
      

  5.   

    或者一种更简单的:
    String pattern = "\\W";
    String Str = "[-a+a#a$a%*&a]";
    Str = Str.replaceAll(pattern, "");
    System.out.println("str=["+Str+"]"); 
      

  6.   

    我也帮楼主写了一个,不知道是不是楼主要的结果,不是的话就是我会错意了:
    import java.util.regex.Pattern;public class TestRegex { public static void main(String[] args) {
    // TODO Auto-generated method stub
    String ends = "[^\\[a]*";
            String str=",[aaaaa";
            System.out.print(Pattern.compile(ends).matcher(str).replaceAll(""));
    }}
      

  7.   

    在正则表达式中,连字符(“-”)有着特殊的意义,它表示一个范围,比如从0到9。因此,你只是想要匹配“-”这样的符号,那么它的前面要加上一个转义字符“\”。 
    String ends = "^[@#$%^&*\\-_,,¥、]*";
    String str=",[aaaaa";
    System.out.print(Pattern.compile(ends).matcher(str).replaceAll(""));