源码:
public class Test { /**
 * @param args
 */
public static void main(String[] args) {
Pattern pattern =Pattern.compile("\\");
Matcher matcher=pattern.matcher("d:\\vv\\vvvv");
if (matcher.find())
System.out.println("真");
else
System.out.println("假");
// System.out.println("d:\\vv\\vvvv".matches("\\"));

}}
运行时报错
Exception in thread "main" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\
 ^ 我已经用/转义过了,不知道还出错。

解决方案 »

  1.   

    Pattern pattern =Pattern.compile("\\\\"); 
      

  2.   

    Pattern pattern =Pattern.compile("\\\\");
      

  3.   

    要转义两次啊,'\'这个东西可是个宝贝,在java和正则中都是转义的前缀
      

  4.   

    谢谢各位了,但是System.out.println("d:\\\\vv\\\\vvvv".matches("\\\\")); 怎么会输出是false,用Pattern类可输出真?
      

  5.   

    Pattern pattern =Pattern.compile("\\\\");?
    改成这样不知道行不行。
      

  6.   

    matches匹配整个字符串
    System.out.println("d:\\vv\\vvvv".matches("d:\\\\vv\\\\vvvv"));输出true
      

  7.   

    System.out.println("d:\\vv\\vvvv".matches("\\\\")); "d:\\vv\\vvvv" 这个又不是正则,你就不用转两次了,转一次就行了
      

  8.   

    这么写:System.out.println("d:\\vv\\vvvv".matches("\\\\"));
    还是输出FALSE
      

  9.   

    难道真是matches必须要匹配双方相等?
      

  10.   

    我这输出是false,也就是不匹配。你们输出TRUE吗?
      

  11.   

    System.out.println(Pattern.compile("\\\\").matcher("d:\\vv\\vvvv").find());
    输出为:true