A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张玉建 中级黑马   /  2013-8-10 20:39  /  1209 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

正则表达式匹配中如何保证几个数相同
aaabb,a是0-9任意数字,b是o-9的任意数字
我知道
[0-9]{3} [0-9]{2}可以!但这样能够匹配,但这样明显不符合要求
我查看一下资料!
(\d)\1\1(\d)\2\2这样匹配!没看明白!求解释!
求正确的解法!

4 个回复

倒序浏览
本帖最后由 白堇翎 于 2013-8-10 20:54 编辑

[\d]\1{3}[\d]\2{2} 试试这个
不对 应该是
([\d])\1{3}([\d])\2{2}
回复 使用道具 举报
aaabb是三个重复的数字和两个重复的数字组合,[0-9]{3} [0-9]{2}这个匹配是三个数字加两个数字等同于[0-9]{5},不保证是重复的。这个匹配必须是(\d)\1\1(\d)\2,其中(\d)表示一个数字,加了括号是给它一个分组编号:\1,而\1就表示该位置的值,是完全相同的,两个\1就是重复两次,后面第二个(\d)表示一个新的数字,这时它的编号是\2,要重复两次所以要加个\2,aaabb正确的匹配应该是(\d)\1\1(\d)\2,后面只重复两次,只能加一个\2.
回复 使用道具 举报
会飞的狼 发表于 2013-8-10 20:58
aaabb是三个重复的数字和两个重复的数字组合,[0-9]{3} [0-9]{2}这个匹配是三个数字加两个数字等同于[0-9]{ ...

谢谢!那如果a出现了5次不是三次!\1标记是复写四次吗!如何写?
aaaaa
回复 使用道具 举报
张玉建 发表于 2013-8-10 21:22
谢谢!那如果a出现了5次不是三次!\1标记是复写四次吗!如何写?
aaaaa

那就这样(\d)\1{4},不要写那么多编号,只要加个{次数}就行了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马