我想把文件中的"\"定位出来,写了以下的程序,在定位"a"时可以找到"a"在文件中的位置。但如果定位"\"时,报错了,程序如下:
import java.io.*;
import java.util.regex.*;public class RegularExpressionSmall { public static void main(String args[]) {
StringBuilder sb = new StringBuilder();
try {
File f = new File("staday.txt");
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
String s = "";
while ((s = br.readLine()) != null) {
sb = sb.append(s).append('\r');
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(sb);
Pattern p = Pattern.compile("\\");
Matcher m = p.matcher(sb);
boolean b = false;
while (b = m.find()) {
System.out.print(m.start() + "  ");
}
}
}
错误如下:
Exception in thread "main" java.util.regex.PatternSyntaxException: Unexpected in
ternal error near index 2
b\
  ^
        at java.util.regex.Pattern.error(Pattern.java:1713)
        at java.util.regex.Pattern.compile(Pattern.java:1466)
        at java.util.regex.Pattern.<init>(Pattern.java:1133)
        at java.util.regex.Pattern.compile(Pattern.java:823)
        at RegularExpressionSmall.main(RegularExpressionSmall.java:20)
高手帮我看看,谢谢

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【flyingslh】截止到2008-06-27 14:03:44的历史汇总数据(不包括此帖):
    发帖数:1                  发帖分:20                 
    结贴数:0                  结贴分:0                  
    未结数:1                  未结分:20                 
    结贴率:0.00  %            结分率:0.00  %            
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    Pattern p = Pattern.compile("\\"); 
    用四个试一下,
      

  3.   

    Pattern p = Pattern.compile("\\\\"); //正则表达式中 \ 也得转义
      

  4.   


    public static void do9(){
    File f=new File("E:\\temp\\test.txt");
    if(f.exists())
    System.out.println("get file ok!");
    else System.out.println("get no file");
    StringBuffer sb = new StringBuffer();
    try
    {
    InputStream is = new FileInputStream(f);
    BufferedReader in = new BufferedReader(new InputStreamReader(is,"GBK"));
    String str = "";
    while(null!=(str=in.readLine()))
    {
    sb.append(str);
    }
    is.close();
    Pattern pattern = Pattern.compile("\\\\",Pattern.CASE_INSENSITIVE|Pattern.DOTALL);
    Matcher m = pattern.matcher(sb.toString());
    while(m.find()){
    System.out.println("get ok!");
    System.out.print(m.start() + "#"); 
    }
    }
    catch(IOException e){}
    }test.txt里的内容为:E:\tempE:\tempE:\tempE:\tempE:\tempE:\tempE:\tempE:\tempE:\tempE:\temp打印为:get file ok!
    get ok!
    2#get ok!
    9#get ok!
    16#get ok!
    23#get ok!
    30#get ok!
    37#get ok!
    44#get ok!
    51#get ok!
    58#get ok!
    65#