java中关于正则表达式的基本使用

概述,当对一个字符串的操作处理逻辑非常复杂,代码量大时可以采取正则表达式的方式来对字符串进行处理,但也有缺点,就是要熟悉各字符,符号及符号组合的意义需要经常使用才能孰能生巧

一.正则表达式的特点

1.作用:符合一定规则的表达式,用于专门操作字符串

2.特点:用于一些特定的符号来表示一些代码操作

3.好处:可以简化对字符串的复杂操作

二.匹配功能

1.定义:String matches方法,用规则匹配整个字符串,只要有一处不符合规则,就匹配结束,返回false

 1 public static void checkQQ(){
 2         String qq="123456a";
 3         String regex="[1-9][0-9]{4,14}";
 4         boolean flag=qq.matches(regex);
 5         if(flag){
 6             System.out.println(qq+"is ok...");
 7         }else{
 8             System.out.println(qq+"输入错误");
 9         }
10     }
View Code
1 public static void demo(){
2         String str="b23a23456789";
3         String reg="[a-zA-Z]\\d{2}[a-z]\\d*";
4         boolean flag=str.matches(reg);
5         System.out.println(flag);
6     }
View Code
该方法不使用正则表达式,操作复杂,代码量大
public static void checkQQ_1(){
        String qq="";
        int len=qq.length();
        if(len>=5&&len<=15){
            if(!qq.startsWith("0")){
                try {
                    long l=Long.parseLong(qq);
                    System.out.println("qq:"+qq);
                } catch (Exception e) {
                    // TODO: handle exception
                    System.out.println("出现非法字符");
                } 
                /*char arr[]=qq.toCharArray();
                boolean flag=false;
                for (int i = 0; i < arr.length; i++) {
                    if(!(arr[i]>='0'&&arr[i]<='9')){
                        flag=false;
                        break;
                    }
                }
                if(flag){
                    System.out.println("qq:"+qq);
                }else{
                    System.out.println("非法字符");
                }*/
            }else{
                System.out.println("qq不能以0开头");
            }
        }else{
            System.out.println("长度错误");
        }
    }
View Code

三.切割

1.String sprit();

1 public static void splitDemo(String str,String reg){
2         //String reg=" +";//按多个空格来进行切割
3         String[] attr=str.split(reg);
4         System.out.println(attr.length);
5         for (String s : attr) {
6             System.out.println(s);
7         }
8     }
View Code

四.替换

1.String replaceAll()

1 public static void replaceAllDemo(String str,String regex,String newStr){
2         str=str.replaceAll(regex, newStr);
3         System.out.println(str);
4     }
View Code

五.获取

1.定义:将字符串中符合规则的子串取出

2.操作步骤

2.1 将正则表达式封装成对象

2.2 让正则对象和要操作的字符串相关联

2.3 关联后,获取正则匹配引擎

2.4 通过引擎对符合规则的子串进行操作,比如取出

 1 public static void getDemo(){
 2         String str="ming tian yao fang jia le,da jia. ";
 3         String reg="\\b[a-z]{3}\\b";//\b代表单词边界
 4         //将规则封装成对象
 5         Pattern p=Pattern.compile(reg);
 6         //让正则对象和要作用的字符串相关联,获取匹配器对象
 7         Matcher m=p.matcher(str);
 8         System.out.println(m.matches());//其实String类中的matches方法,用的就是Pattern和Matcher对象来完成的
 9                                         //只不过被String类的方法封装后,用起来比较简单,但是功能却单一
10         //boolean b=m.find();//将规则作用到字符串上,进行符合规则的子串查找
11         //System.out.println(b);
12         //System.out.println(m.group());//用于获取匹配后的结果
13         while(m.find()){
14             System.out.println(m.group());
15             System.out.println(m.start()+"...."+m.end());
16         }
17         
18     }
View Code

六.正则表达式功能的选择

1.判断字符串是否正确,匹配功能

2.将字符串变成另一个字符串,替换功能

3.按照指定的方式将字符串变成多个字符串,切割功能

4.得到符合需求的字符串子串,获取功能

--------------------------------------技术改变生活,知识改变命运!

posted @ 2016-10-15 10:57  li_wu  阅读(288)  评论(1编辑  收藏  举报