黑马程序员技术交流社区

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

作者: 罗安迪    时间: 2014-3-24 18:27
标题: 关于正则表达式的问题,谢谢!!!
本帖最后由 罗安迪 于 2014-3-27 19:55 编辑

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

比如

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

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

但是测试不对呢?

为什么呢?




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

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

那是不是 假如我要测试的是 11112344445 应该是  (1)\\1{3}23(4)\\2{4}  呢?
谢谢!
作者: 无道    时间: 2014-3-25 18:16
罗安迪 发表于 2014-3-25 14:54
那是不是 假如我要测试的是 11112344445 应该是  (1)\\1{3}23(4)\\2{4}  呢?
谢谢! ...

首先这个表达式,刚刚测试过,,不能匹配你写的字符串,,,写正则表达式要看你的需求是什么样的,比如,你想在“sdfs2335sdfsd342sdfs23542sdfs2342”这个字符串找出连续的数字,不需要那么写了,要写标识符,"(\\d+)+"这个表达就可以找出连续的数字。。如果你确定某一位是固定字符的话 ,你的写法是正确的。




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