黑马程序员技术交流社区

标题: java基础持续更新------正则表达式 [打印本页]

作者: 青龙李坤    时间: 2015-6-16 23:33
标题: java基础持续更新------正则表达式
方法解析
matches():匹配整个字符串
find():匹配子字符串
lookingAt():永远从整个字符串的开头开始匹配
//email  
        p("asdsfdfagf@adsdsfd.com".matches("[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+"));//true  
         
        //matches() find() lookingAt()  
        Pattern p = Pattern.compile("\\d{3,5}");  
        Matcher m = p.matcher("123-34345-234-00");  
         
        //将整个"123-34345-234-00"用正则表达式引擎查找匹配,当到第一个"-"不匹配了,就停止,  
        //但不会将不匹配的"-"吐出来  
        p(m.matches());  
        //将不匹配的"-"吐出来  
        m.reset();  
         
        //1:当前面有p(m.matches());查找子字符串从"...34345-234-00"开始  
        //将会是第1,2两个查到"34345""234" 后面2个查不到为false  
        //2:当前面有p(m.matches());m.reset();查找子字符串从"123-34345-234-00"开始  
        //将为true,true,true,false  
        p(m.find());  
        p(m.start()+"---"+m.end());  
        p(m.find());  
        p(m.start()+"---"+m.end());  
        p(m.find());  
        p(m.start()+"---"+m.end());  
        p(m.find());  
        //要是没找到就会报异常java.lang.IllegalStateException  
        //p(m.start()+"---"+m.end());  
         
        p(m.lookingAt());  
        p(m.lookingAt());  
        p(m.lookingAt());  
        p(m.lookingAt());  
字符串替换:下面这种方法对于字符串替换非常灵活
//字符串替换  
        //Pattern.CASE_INSENSITIVE大小写不敏感  
        Pattern p = Pattern.compile("java",Pattern.CASE_INSENSITIVE);  
        Matcher m = p.matcher("java Java jAva ILoveJavA youHateJAVA adsdsfd");  
        //存放字符串  
        StringBuffer  buf = new StringBuffer();  
        //计数奇偶数  
        int i  = 0;  
        while(m.find()){  
            i++;  
            if(i%2 == 0){  
                m.appendReplacement(buf, "java");  
            }else{  
                m.appendReplacement(buf, "JAVA");  
            }  
        }  
        //不加这句话,字符串adsdsfd将会被遗弃  
        m.appendTail(buf);  
        p(buf);  
运行结果:
JAVA java JAVA ILovejava youHateJAVA adsdsfd  
//group分组,()分组  
        Pattern p = Pattern.compile("(\\d{3,5})([a-z]{2})");  
        String s = "123aa-34345bb-234cc-00";  
        Matcher m = p.matcher(s);  
        p(m.groupCount());//2  
        while(m.find()){  
            p(m.group());//数字字母都有  
            //p(m.group(1));//只有数字  
            //p(m.group(2));//只有字母  
        }  
基础持续更新-------正则表达式


作者: 青龙李坤    时间: 2015-6-16 23:34
这是最后一个了,码农无罪,幸福加倍!!!
作者: 1958078929    时间: 2015-6-17 06:44
谢谢分享




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