黑马程序员技术交流社区

标题: 作业题,改了之后无输出,求解释 [打印本页]

作者: 726477179    时间: 2016-8-13 22:33
标题: 作业题,改了之后无输出,求解释
注释处为什么不能改成String regex = "[1][358]\\d{6}(.)\\1{3}";呢?
需求:(1)定义一个存放手机号码的数字字符串数组{"16210626656","18601066888","13912387666","13156166693","15115888028"}
        (2)利用正则表达式过滤出符合条件的手机号码;规则:第1位是1,第二位可以是数字358其中之一,后面6位任意数字,最后5位为任意相同的数字。
        public static void Test1() {
                String[] s = { "16210626656", "18601066888", "13912387666",
                                "13156166693", "15115888028" ,"13912387667"};
                String regex = "[1][358]\\d{6}(.)\\1+";       //                String regex = "[1][358]\\d{6}(.)\\1{3}";为什么不行呢?      
                int i = 0;
                while (i < s.length) {
                        if (s[i].matches(regex)) {
                                System.out.println(s[i]);
                        }
                        i++;
                }
        }
注释处改成{3} 为什么不行呢 ? 大括号意思不是符合几次吗?
作者: 冯潜001    时间: 2016-8-13 22:54
在定义正则表达式的匹配规则字符串的里面,想再次使用组中的内容,可通过\\1来进行使用   这里改为{3}话  应该是((.)\\1){3}        所以出错
作者: 726477179    时间: 2016-8-14 13:50
本帖最后由 726477179 于 2016-8-14 13:52 编辑
冯潜001 发表于 2016-8-13 22:54
在定义正则表达式的匹配规则字符串的里面,想再次使用组中的内容,可通过\\1来进行使用   这里改为{3}话  ...

哦~原来是这样~




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