黑马程序员技术交流社区

标题: 正则表达式问题 [打印本页]

作者: asvsass    时间: 2013-10-12 16:41
标题: 正则表达式问题
本帖最后由 asvsass 于 2013-10-12 16:42 编辑

就是 用点符号.切割   在正则表达式中点符号代表一个特殊字符 所以要转义字符  \.  但是\.不是把点转义成正常的点符号了吗  为什么要\\.
这样 点前面的\不就是个正常的反斜杠  还怎么转义
作者: Jam-l    时间: 2013-10-12 16:49
因为正则表达式的. 并不是.的意思,它表示任何字符,你要把他转变成正则表达式的.符号就要\. 而在字符串里\又不能直接用\表示,必须转义\\才表示一个\ ,所以用字符串split切割.的时候需要用"\\."表示
作者: hoyouly    时间: 2013-10-12 16:49
(2)        不能用“.”直接切割,因为“.”在正则表达式中是由特殊意义:任意字符,需要转意,即“\.”而”\”在正则表达式中也是有特殊意义的,所以还需要再次转意  即  \\.   
说在正则表达式中,反斜杠只要出现,必须是成对的,
作者: asvsass    时间: 2013-10-12 16:54
\\.第一个反斜杠把第二个反斜杠 转义成普通的反斜杠 普通股的反斜杠就不能转义点符号了吧
作者: 郑齐育    时间: 2013-10-12 17:19
对于java源码来说'\'表示转义字符,因此必须使用"\\"来和java的的字节码解释器加一区分,时正则表达式不被jvm解释,保证正则表达式被正确解释。
作者: 蓝雨星空    时间: 2013-10-12 19:50
在java中编写正则,先要被java虚拟机所识别为字符串,再传到虚拟机内置的正则解释引擎中。而在java虚拟机中,字符串中的“\”是把下一个字符转义的意思,如果写成“\.”这样的话,就是一个“.”的意思,但是如果虚拟机把一个“.”传给正则解释引擎的话,在正则解释引擎中,一个“.”就是任意字符的意思了。而写成“\\.”这样的话,虚拟机就会把第一个“\”解释为转义字符,把后面那个“\”转义为普通反斜杠,这样第二个“\”就不再具有转义的功能了,然后传到正则解释引擎时就是“\.”了,在正则中反斜杠和点的组合就会转义为普通点了........^_^
作者: To    时间: 2013-10-13 13:51
楼主你好,如果问题已解决请将帖子状态修改为提问结束,如果未解决请继续提问,谢谢合作
作者: To    时间: 2013-10-14 09:24
楼主你好,如果问题已解决请将帖子状态修改为提问结束,如果未解决请继续提问,谢谢合作
如果不会修改请看解释帖:http://bbs.itheima.com/thread-89313-1-1.html




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