zoukankan      html  css  js  c++  java
  • 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";//代表单词边界
     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.得到符合需求的字符串子串,获取功能

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

  • 相关阅读:
    ABP框架理论学习之Debugging
    探索博客园的“打赏”模式
    P3382 【模板】三分法
    1020.数字识别
    洛谷 P1162 填涂颜色
    在windows命令行批量ping局域网内IP
    1154:LETTERS
    百炼 2790:迷宫
    洛谷 P1605 迷宫
    2012年NOIP普及组 摆花
  • 原文地址:https://www.cnblogs.com/liwu/p/5962940.html
Copyright © 2011-2022 走看看