黑马程序员技术交流社区

标题: 关于正则表达式的疑问 [打印本页]

作者: 尹旗龙    时间: 2012-2-10 15:19
标题: 关于正则表达式的疑问
本帖最后由 尹旗龙 于 2012-2-10 16:21 编辑

将字符串中的两个斜杠替换成一个斜杠:
System.out.println("\\\\".replaceAll("\\\\{2}", "\\"));这句执行时 抛异常!

而下面这个就正常显示一个星号
System.out.println("\\\\".replaceAll("\\\\{2}", "*"));

为什么会是这样呢??
作者: 蒙武辉    时间: 2012-2-10 16:00
System.out.println("\\\\".replaceAll("\\\\{2}", "\\"));这句执行时 抛异常!
应该这样写才对System.out.println("\\\\".replaceAll("\\\\ {2}", "\\"));
\{有转义作用


作者: 万正    时间: 2012-2-10 16:06
本帖最后由 向北航行 于 2012-2-10 16:11 编辑

'\'在java中是一个转义字符,所以需要用两个代表一个。例如System.out.println( "\\" ) ;只打印出一个"\"。但是'\'也是正则表达式中的转义字符(replaceAll 的参数就是正则表达式),需要用两个代表一个。所以:\\\\被java转换成\\,\\又被正则表达式转换成\。
第一句可以改成System.out.println("\\\\".replaceAll("\\\\{2}", "\\\\"));
作者: 尹旗龙    时间: 2012-2-10 16:21
向北航行 发表于 2012-2-10 16:06
'\'在java中是一个转义字符,所以需要用两个代表一个。例如System.out.println( "\\" ) ;只打印出一个"\" ...

学习了 谢谢

作者: 小白    时间: 2012-2-10 17:33
“*”匹配0或多个正好在它之前的那个字符,本身不代表特定的字符!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2