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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 罗安迪 中级黑马   /  2014-3-24 18:27  /  1748 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 罗安迪 于 2014-3-27 19:55 编辑

如何确保字符串里面的字符或者数字是一样的呢?

比如

String s = “12344444”; 如何确保里面的4是连续5个?

我看到有123【4】\1{5}

但是测试不对呢?

为什么呢?



6 个回复

倒序浏览
(\\d)\\1{4
回复 使用道具 举报
123(4)\\1{4}这样写就对了,刚刚试过,可以获取到12344444这个字符串。我觉得写那个正则表达式的人意思可能是想将4封装成一个组,然后使用\1来捕获这个组,让这个组可以重复使用。重复使用的次数应该为4,前边已经使用了一次了。所以当你测试结果不对、
回复 使用道具 举报
String regex = "[1-3]{3}(\\d){5}";
前三位是123里的数字,出现了三次,后五位是同一个数字,用\d表示,但是java里\是转义字符,所以要用\\d表示一个数字,这个数字出现了五次,所以把\\d封装成组,正好出现五次用{5}表示
回复 使用道具 举报
bjfanxc 发表于 2014-3-25 12:27
String regex = "[1-3]{3}(\\d){5}";
前三位是123里的数字,出现了三次,后五位是同一个数字,用\d表示,但 ...

虽然我没有试过 不过···(\\d){5} 是不是意味着 任意数值5个啊? 他们前面有个\\1我是觉得应该有的吧?
谢谢啊~
回复 使用道具 举报
无道 发表于 2014-3-24 23:05
123(4)\\1{4}这样写就对了,刚刚试过,可以获取到12344444这个字符串。我觉得写那个正则表达式的人意思可能 ...

那是不是 假如我要测试的是 11112344445 应该是  (1)\\1{3}23(4)\\2{4}  呢?
谢谢!
回复 使用道具 举报
无道 中级黑马 2014-3-25 18:16:08
7#
罗安迪 发表于 2014-3-25 14:54
那是不是 假如我要测试的是 11112344445 应该是  (1)\\1{3}23(4)\\2{4}  呢?
谢谢! ...

首先这个表达式,刚刚测试过,,不能匹配你写的字符串,,,写正则表达式要看你的需求是什么样的,比如,你想在“sdfs2335sdfsd342sdfs23542sdfs2342”这个字符串找出连续的数字,不需要那么写了,要写标识符,"(\\d+)+"这个表达就可以找出连续的数字。。如果你确定某一位是固定字符的话 ,你的写法是正确的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马