zoukankan      html  css  js  c++  java
  • 正则例子

    package org.cd.regex;
    //汉字范围u4E00-u9FA5  
    
    import java.util.regex.Matcher;  
    import java.util.regex.Pattern;  
    /**
     * 
     * @author cd
     * @date 2018年12月27日 下午5:03:51
     * @desc 正则的使用  
     */
    public class sxtRegex01 {
    
         public static void main(String[] args) {  
             
                p("检查是否匹配:"+"abc".matches("..."));  
                  
                p("替换字符串:"+"abc123aa".replaceAll("\d", "."));  
                  
                Pattern p = Pattern.compile("[a-z]{3}");  
                Matcher m = p.matcher("fgha");  
                p("Pattern+Matcher方法验证匹配:"+m.matches());  
                  
                p("------------------");  
                  
                p("a".matches("[abc]"));  
                p("a".matches("[^abc]"));  
                p("A".matches("[a-zA-Z]"));  
                p("A".matches("[a-z]|[A-Z]"));  
                p("A".matches("[a-z(A-Z)]"));  
                p("R".matches("[A-Z&&(RFG)]"));  
                  
                p("------------------");  
                  
                p("a_8".matches("\w{3}"));  
                p("\".matches("\\"));  
                  
                p("------------------");  
                  
                p("hello sir".matches("h.*"));  
                p("hello sir".matches(".*ir$"));  
                p("hello sir".matches("^h[a-z]{1,3}o\b.*"));//匹配单词边界,单词边界是空格出现的位置用\b匹配  
                p("hellosir".matches("^h[a-z]{1,3}o\b.*"));  
                p(" 
    ".matches("^[\s&&[^\n]]*\n$"));//开头是一个空格,且不能是换行符,最后必须是换行  
                  
                p("------------------");  
                  
                Pattern p2 = Pattern.compile("\d{3,5}");  
                String s = "123-4536-89789-000";  
                Matcher m2 = p2.matcher(s);  
                  
                p(m2.matches());  
                m2.reset();//把吃进去的字符吐出来重新匹配,否经过m2.matches会吃进去字符 下面的匹配就不成功  
                p(m2.find());  
                p(m2.start()+"-"+m2.end());//找到了 就把首位位置打印下(必须找到才能打印)  
                p(m2.find());  
                p(m2.start()+"-"+m2.end());  
                p(m2.find());  
                p(m2.start()+"-"+m2.end());  
                p(m2.find());  
                  
                p(m2.lookingAt());//每次都是才头上开始找  
                  
                p("------------------");  
                  
                Pattern p3 = Pattern.compile("java",Pattern.CASE_INSENSITIVE);//加属性后,Patter.CASE_INSENSITIVE表示大小写不管  
                Matcher m3 = p3.matcher("java_Java_jAva_jAVa_IloveJava");  
                p(m3.replaceAll("JAVA"));//把所有的都替换为大写的  
                  
                p("------------------按照单双数替换");  
                Pattern p4 = Pattern.compile("java",Pattern.CASE_INSENSITIVE);//加属性后,Patter.CASE_INSENSITIVE表示大小写不管  
                Matcher m4 = p4.matcher("java_Java_jAva_jAVa_IloveJava fdasfas");  
                  
                StringBuffer sb = new StringBuffer();  
                int i = 0;  
                while(m4.find()){  
                    i ++;  
                    if(i%2 == 0){  
                        m4.appendReplacement(sb, "java");  
                    }else{  
                        m4.appendReplacement(sb, "JAVA");  
                    }  
                }  
                m4.appendTail(sb);//把尾巴在再添加到buf上既是sb  
                p(sb);  
                  
                p("------------------分组加括号只取数字一组");  
                Pattern p5 = Pattern.compile("(\d{3,5})([a-z]{2})");  
                Matcher m5 = p5.matcher("123bb_78987dd_090po");  
                  
                while(m5.find()){  
                    p(m5.group(1));//grop括号里面第0组是整体,第一组是左起第一个括号,第二组是左起第二个括号  
                }  
                  
                p("------------------贪婪的匹配与不贪婪匹配");  
                Pattern p6 = Pattern.compile("(.{3,10}?)[0-9]");//.{3,10}后面没问号就是贪婪匹配会陪到最长,如果{3,10}?加?号就是懒蛋匹配之匹配最少的,从3个开始找  
                Matcher m6 = p6.matcher("aaaa5dddd8");  
                while(m6.find()){//如果这里用if(m6.find)(){p(m6.start()+"-"+m6.end());}  那么之匹配第一个  
                    p(m6.start()+"-"+m6.end());  
                }  
                  
                p("------------------普通捕获");  
                Pattern p7 = Pattern.compile(".{3}");  
                Matcher m7 = p7.matcher("ab4dd5");  
                while(m7.find()){  
                    p(m7.group());  
                }  
                  
                p("------------------非捕获组");  
                Pattern p8 = Pattern.compile(".{3}(?=a)");//(?=a)这个是非捕获组的意思,最后一个是a而且还不把这个a取出来!!(?=a)这个要是写在前面 就不一样了  
                Matcher m8 = p8.matcher("ab4add5");  
                while(m8.find()){  
                    p("后面不能是a的"+m8.group());  
                }  
                  
                p8 = Pattern.compile("(?!a).{3}");//(?!a)前面不能是a的  
                m8 = p8.matcher("abbsab89");  
                while(m8.find()){  
                    p("前面不能是a的"+m8.group());  
                }  
                  
                //(?<!a)从后往前数 不是a的  
                //(?<=a)从后往前数 是a的  
                p("------------------去除><号匹配");  
                Pattern p9 = Pattern.compile("(?!>).+(?=<)");  
                Matcher m9 = p9.matcher(">编程中国<");  
                while(m9.find()){  
                    p(m9.group());  
                }  
                  
                p("------------------向前引用");  
                Pattern p10 = Pattern.compile("(\d\d)\1");//这里面的1是向前引用,12是第一匹配到的,下一次在匹配出来12和前面相同 所以是true  
                Matcher m10 = p10.matcher("1212");  
                p(m10.matches());  
                  
                p("------------------忽略大小写,正则内嵌");//(?i)非捕获组里面这个表示忽略大小写  
                p("java".matches("(?i)JAVA"));  
            }  
         
         public static void p(Object o){  
                System.out.println(o);  
         }  
    }
  • 相关阅读:
    android动画(一)Interpolator
    android端手机测试体系 (转)
    Android的一些常用命令提示符(cmd)指令[转]
    五招避开银行小额账户管理费[转]
    WEB服务器、应用程序服务器、HTTP服务器区别[转]
    如何解决 “invalid resource directory name”, resource “crunch”[转]
    Eclipse中给jar包导入JavaDoc的方法
    rotium(无源码)获取控件较简单的办法
    基于Robotium框架的测试工程如何导入Robotium包的源码
    常用模块中函数的作用
  • 原文地址:https://www.cnblogs.com/iathanasy/p/10186063.html
Copyright © 2011-2022 走看看