我想把文件中的"\"定位出来,写了以下的程序,在定位"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)
高手帮我看看,谢谢
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)
高手帮我看看,谢谢
楼主【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
用四个试一下,
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#