String str = "^[-A-Za-z0-9\\ /]+$";
Pattern p=Pattern.compile(str);
Matcher m=p.matcher("111aawe\rrt-y/");
boolean rs=m.find();
System.out.println(rs);111aawe\rrt-y/ 应该符合上面的正则表达式,为什么执行结果是false呢.把111aawe\rrt-y/里的\去了就是true了,帮忙解决下,谢谢!
Pattern p=Pattern.compile(str);
Matcher m=p.matcher("111aawe\rrt-y/");
boolean rs=m.find();
System.out.println(rs);111aawe\rrt-y/ 应该符合上面的正则表达式,为什么执行结果是false呢.把111aawe\rrt-y/里的\去了就是true了,帮忙解决下,谢谢!
解决方案 »
- 这里有免费的java编程思想(中文版),非常不错,需要的朋友赶快去
- 其实,要是提前一个世纪出身,发明选择排序法的人是我!虽然那时还没有电脑,但是也有了算盘。
- 现在有三个小小的applet ,给大家实现下,给分的...
- 关于时间型和字符串型的转化问题?十万火急
- 超级问题。java是否可以调用windows的com组件或api,以及C++是否可以调用java的class文件以及ejb组件
- JRadioButton的问题
- .jar是什么文件呀,怎么弄出来的?谢谢
- 这是什么错误 ,我怎么老碰到它呀
- visual age for java 的使用
- java实现三层架构的方法
- 请大家帮个忙
- Jtable数据实时排序
正则表达式 ^ 和 $ 忽略行结束符,仅分别与整个输入序列的开头和结尾匹配。另,如果你允许字符串中存在"\",参照1楼的写法。
如你这里的\r表示的就是制表符,\n回车符等等。
其实我估计你的这个意思不是匹配\r而是允许出现“\”。正则表达式中单独出现的反斜线字符,在正则表达式的层面,必须以转义序列‘\\’来表示,
然而,每个反斜线,在表示正则表达式的字符串中,又必须以转义序列‘\\’来表示。
所以,在字符串中,必须写出四个反斜线‘\\\\’,才能对应到正则表达式中单独出现的一个反斜线字符:
在字符串处理层面,它们会被识别为两个反斜线‘\\’,在正则表达式的层面,它们会被识别为单个反斜线字符‘\’。在你写的代码中,正好赶巧了。你正好写的是“\r”.如果你换成“\d”就会报错的。你大概的意思,可能是下面代码的意思。
String str = "^[-A-Za-z0-9\\\\ /]+$";
Pattern p=Pattern.compile(str);
String ss = "111\\aa\\rwerrdt-y/";
Matcher m=p.matcher(ss);
boolean rs=m.find();
System.out.println(rs);
String str = "^[-A-Za-z0-9\\\\/]+$";
Pattern p=Pattern.compile(str);
Matcher m=p.matcher("ahsdu-7\0/8/9");
boolean rs=m.find();
System.out.println(rs);当匹配的String是一个\再后面跟数字的情况,还是false.比如ahsdu-7\0/8/9
1.八进制转义序列:\ + 1到3位5数字;范围'\000'~'\377'
\0:空字符
2.Unicode转义字符:\u + 四个十六进制数字;0~65535
\u0000:空字符
3.特殊字符:
\":双引号
\':单引号
\\:反斜线
4.C0控制字符:
\b:退格
\t:tab
\n:换行
\f:换页
\r:回车