黑马程序员技术交流社区

标题: 大家好,有个关于正则的问题想问下 [打印本页]

作者: laijun    时间: 2016-7-22 22:16
标题: 大家好,有个关于正则的问题想问下
创建ArrayList对象,添加成员,如"abcd3","abcde"等,代码实现方法体:public void deleteNum(ArrayList<String> list){...}。要求凡是成员中包含有数字(0~9)的均删除,如成员"abcd3"是需要删除的。

public static void main(String[] args) {
                ArrayList<String> list = new ArrayList<>();
                list.add("abcs");
                list.add("abcs2");
                list.add("abcsd");
                list.add("abcsda");

                deleteNum(list);
        }

        public static void deleteNum(ArrayList<String> list) {
                Iterator<String> it = list.iterator();
                        String regex = "\\d";
                        while(it.hasNext()) {
                                if(it.next().matches(regex)) {
                                        it.remove();
                                }
                        }
                        System.out.println(list);
        }

为什么我删不掉里面含有数字的字符串,"\\d"不是代表任意数字吗,求大神解答TAT

作者: Frankle    时间: 2016-7-23 09:53
正则的写得不对,数字前面的字母也应该作为表达式的一部分,字母的正则表达式是[a~zA~Z],它出现了多次,那么就是[a~zA~Z]+,后面的数字出现1次以上,则为\\d+,所以正确的表达式应该是这样:String regex = "[a~zA~Z]+\\d+";
作者: cat73    时间: 2016-7-23 10:00
换这个正则:
  1. ^.*\\d.*$
复制代码





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