日期:2014-05-20  浏览次数:20717 次

菜鸟提问:如何定义正则表达式中的* " 等特殊字符字符
我想写一个check   name的方法,non_permit   是不允许出现的字符,permit是允许出现但是不能单独出现的字符,   但是如果这样定义   non_permit= "* " ";无法与m   中的字符匹配。如果定义non_permit= "\*\ " ";编译时就报错。我该怎么办啊?
  private   boolean   checkName(GXItem   it)   {
        String     non_permit= "* " ";
        String     permit= ".- ";
        Pattern   p   =   Pattern.compile(non_permit);
        Matcher   m   =   p.matcher(it.getText());
        boolean   b   =   m.find();
        if   (b)   {
            error(it,   "Invalid,please   correct   it ");
        }
        m.replaceAll(permit);
        return!b;
    }


------解决方案--------------------
加\\
------解决方案--------------------
转义呗
------解决方案--------------------
private static boolean checkName(String text) {
String non_permit = "\\* ";
String permit = ".- ";
Pattern p = Pattern.compile(non_permit);
Matcher m = p.matcher(text);
boolean b = m.find();
if (b) {
System.out.println( "error ");
}
m.replaceAll(permit);
return !b;
}