Java学习,正则表达式与一些常见类

通过视频的学习,总结了一些可能会用到的东西,有一些类在日后的学习生活中还得继续通过查询API,百度的方式学习。

常见类:String  StringBuffer Integer  Math Random System BigInteger BigDecimal Date SimpleDateFormat Calendar大笑

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class JavaApplication3 {


    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // 正则表达式
        //1.字符类
        String regrex="[abc]";         //[]代表单个字符 且仅当字符为a b或c时才返回ture
        String regrex1="[^abc]";       //               当该字符不为a、b或者c时才返回ture,^表否定的意思
        String regrex2="[a-zA-Z]";      //               当该字符为a-z 或者A-Z内返回ture,两头都包含,取并集.
        String regrex3="[a-z&&[def]]";  //                  取交集,该式子实际上就是取def中的一个
        //后两个以此类推
        String regrex4="[a-z&&[^bc]]";
        String regrex5="[a-z&&[^m-p]]";
        System.out.println("a".matches(regrex));
        System.out.println("d".matches(regrex));
        
        System.out.println("a".matches(regrex1));
        System.out.println("d".matches(regrex1));
        
        System.out.println("a".matches(regrex2));
        System.out.println("%".matches(regrex2));
        //2.预定义字符类
        String regrex6=".";             //  .代表的是任意字符,一个“.”代表一个,依此类推
        String regrex7="\\d";           //  \d代表的是数字,即0-9。而第一个“\”代表的是转义字符,所以想代表\d,则必须写为\\d
        String regrex8="\\D";           //  \D代表的是非数字
        String regrex9="\\s";           //  \s代表的是空白字符
        String regrex10="\\S";          //  \S代表的是非空白字符
        String regrex11="\\w";          //  \w代表的是单词字符
        String regrex12="\\W";          //  \W代表的是非单词字符
        //3.数量词
        String regrex13="[abc]?";      //  X?       X,表示的是一次或者一次也没有
        String regrex14="[abc]*";      //  X*       X,代表的是零次或多次,即零次以上
        String regrex15="[abc]+";      //  X+       X,代表的是一次或多次,即一次以上
        String regrex16="[abc]{5}";    //  X{n}     X,代表的是恰好n次
        String regrex17="[abc]{5,}";    //  X{n,}     X,代表的是至少n次
        String regrex18="[abc]{5,10}";    //  X{n,m}     X,代表的是至少n次,但是不超过m次,包含m次
        
        System.out.println("a".matches(regrex13));      //这就是表示仅出现一次
        System.out.println("d".matches(regrex13));      //这不表示为一次也没有,所以为false
        System.out.println("".matches(regrex13));       //这就表示为一次也没有,所以为true
        
        System.out.println("".matches(regrex14));      //表示零次,为true
        System.out.println("abc".matches(regrex14));      //这表示为多次,为true
        System.out.println("a".matches(regrex14));       //一次同样为true
        //4.正则表达式的分割功能    Split
        String s="金三胖 金四胖 金五胖";
        String[] arr=s.split(" ");              //切割符为空格
        for(int i=0;i<arr.length;i++)
        {
            System.out.println(arr[i]);
        }
        String s1="金三胖.金四胖.金五胖";
        String[] arr1=s1.split("\\.");          //该切割符不能为“.”的原因是因为“.”为任意字符,会把全部都切断,而又由于特殊原因,该处得用两个转义字符\\转换
        for(int i=0;i<arr.length;i++)
        {
            System.out.println(arr[i]);
        }
        //5.正则表达式的替换功能    replaceAll
        String sss="wo3aa4ss";
        String regrex19="\\d";
        String s2=sss.replaceAll(regrex19, "");
        System.out.println(s2);
        //6.正则表达式的分组功能
        
        /* A:正则表达式的分组功能
* 捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组: 

1     ((A)(B(C))) 
2     (A 
3     (B(C)) 
4     (C) 

组零始终代表整个表达式。
B:案例演示
a:切割
需求:请按照叠词切割: "sdqqfgkkkhjppppkl";
b:替换
需求:我我....我...我.要...要要...要学....学学..学.编..编编.编.程.程.程..程
将字符串还原成:“我要学编程”。
*/        
                demo1();
demo2();
/*
* 需求:我我....我...我.要...要要...要学....学学..学.编..编编.编.程.程.程..程
将字符串还原成:“我要学编程”。
*/
String sd = "我我....我...我.要...要要...要学....学学..学.编..编编.编.程.程.程..程";
String sq = sd.replaceAll("\\.+", "");
String sw = sq.replaceAll("(.)\\1+", "$1");//$1代表第一组中的内容
System.out.println(sw);
        //7.Pattern与Matcher
                Pattern p=Pattern.compile("a*b");              //获取正则表达式
                Matcher m=p.matcher("aaaaab");                  //获取匹配器
                boolean b=m.matches();                          //看是否能匹配,匹配则返回ture
                System.out.println(b);
                
                System.out.println("aaaaab".matches("a*b"));    //与上面结果一样
        //8.正则表达式的获取功能,Pattern与Matcher的结合使用
                //要求一个字符串的手机号码
                String number="我的手机号18898285656,曾经用过的为18898284545,还有17898287878";
                String regex2="1[3578]\\d{9}";                  //手机号码的正则表达式
                Pattern p1=Pattern.compile(regex2);
                Matcher m1=p1.matcher(number);
                while(m1.find())
                    System.out.println(m1.group());
        
        /*      
                9.常见类:   Math Random System BigInteger BigDecimal Date SimpleDateFormat Calendar
        */        
}


public static void demo2() {
//需求:请按照叠词切割: "sdqqfgkkkhjppppkl";
String s = "sdqqfgkkkhjppppkl";
String regex = "(.)\\1+";//+代表第一组出现一次到多次
String[] arr = s.split(regex);

for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}


public static void demo1() {
//叠词 快快乐乐,高高兴兴
String regex = "(.)\\1(.)\\2";//\\1代表第一组又出现一次 \\2代表第二组又出现一次
System.out.println("快快乐乐".matches(regex));
System.out.println("快乐乐乐".matches(regex));
System.out.println("嘻嘻哈哈".matches(regex));
System.out.println("快乐快乐".matches(regex));

//叠词
String regex2 = "(..)\\1";
System.out.println("死啦死啦".matches(regex2));
System.out.println("高兴高兴".matches(regex2));
System.out.println("快快乐乐".matches(regex2));
}
    
}





-----

猜你喜欢

转载自blog.csdn.net/zoweiccc/article/details/78089467