黑马程序员技术交流社区

标题: 关于分割字符串的正则表达式--按叠词分割 [打印本页]

作者: 梦想蓝色天空    时间: 2013-8-28 14:40
标题: 关于分割字符串的正则表达式--按叠词分割
本帖最后由 梦想蓝色天空 于 2013-8-28 17:34 编辑

毕老师视频中 有一段是使用正则表达式 按照叠词分割
比如一个正则表达式 (.)\\1+  中\\1这个
比如三个字符叠加的话 为什么不可以直接使用\\2?  而要使用\\1+
\\1代表具体应该如何理解

作者: yxz    时间: 2013-8-28 14:55
写错了吧
作者: yangjie    时间: 2013-8-28 16:14
首先()是代表一个组,(.)就是把任意字符作为一个组捕获。\\1是代表捕获到的第一个组。1是组的序号。
(.)\\2 这种写法是错误的,因为只有一个()一个组,没有第二组。
作者: 老衲玩IT    时间: 2013-8-28 17:27
\\1是给组编号为1,\\2是给组编号为2,2除了做编号,没有其他意思。
经编码测试:(.)\\1+\\1保留两个叠词,(.)\\1+\\1\\1保留三个叠词
作者: 梦想蓝色天空    时间: 2013-8-28 17:28
yangjie 发表于 2013-8-28 16:14
首先()是代表一个组,(.)就是把任意字符作为一个组捕获。\\1是代表捕获到的第一个组。1是组的序号。
(.)\\2 ...

非常感谢。。。说的很清楚很明白。。。。
作者: 梦想蓝色天空    时间: 2013-8-28 17:30
yxz 发表于 2013-8-28 14:55
写错了吧

没有写错。确实是这样的。。楼上说的比较清楚,可以参考一下,,同时谢谢参与{:soso_e121:}

作者: 梦想蓝色天空    时间: 2013-8-28 17:32
老衲玩IT 发表于 2013-8-28 17:27
\\1是给组编号为1,\\2是给组编号为2,2除了做编号,没有其他意思。
经编码测试:(.)\\1+\\1保留两个叠词, ...

嗯嗯。。下面的结果我也测试过了,就是当时没有搞明白,一经提醒明白多了。。谢谢{:soso_e113:}
作者: yxz    时间: 2013-8-28 17:37
yangjie 发表于 2013-8-28 16:14
首先()是代表一个组,(.)就是把任意字符作为一个组捕获。\\1是代表捕获到的第一个组。1是组的序号。
(.)\\2 ...

\\转义会转义为"\",这样就是匹配"\1"的文字。没有实际意义啊。。。





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