正则表达式

作者: GuoDJ | 来源:发表于2021-05-11 11:35 被阅读0次

    正则,正则表达式

    什么是正则表达式

    正则表达式能够描述字符串的格式,通常用于验证字符串内容;
    正则表达式并不是java语言的内容,而是独立于编程语言的体系;

    为什么需要正则表达式

    在人机信息互动时,可以让计算机验证用户输入的内容是否匹配比如Email,手机号,身份证号等

    正则表达式字符说明一个字符

    一个字符

    转译字符

    \n 换行
    \r 回车
    \t 制表符,一个缩进量
    \ 代表一个反斜线字符
    \' 代表一个单引号(撇号)字符
    \" 代表一个双引号字符
    \0 空字符(NULL)

    预定义字符


    数量词


    matches方法

    package chapter04;
    
    public class Regex_matches {
        public static void main(String[] args) {
            System.out.println("判断字符串表示的字符,是否是abc其中任意一个");
            
            String a = "%";
            System.out.println(a);
            String regex = "\\W";//正则 == 规则
            
            boolean flag = a.matches(regex);
            System.out.println(flag);
            
        }
    }
    
    

    正则验证Email

    字符串支持正则表达式方法—:

    boolean matches(String regex)
    

    使用给定的正则表达式验证当前字符串的格式,匹配通过则返回true否则返回false

    package day02;
    /**
     * 字符串支持正则表达式的相关方法之一:
     * boolean matches(String regex)
     * 该方法是用给定的正则表达式验证当前字符串是否满足
     * 格式要求,满足则返回true.
     * 这里需要注意,正则表达式就算不添加边界匹配符(^...$)
     * 也是做全匹配验证。
     * @author adminitartor
     *
     */
    public class String_matches {
        public static void main(String[] args) {
            /*
             * email的正则表达式
             * [a-zA-Z0-9_]+@[a-zA-Z0-9]+(\.[a-zA-Z]+)+
             * 
             * 
             */
            String email = "fancq@tedu.cn";
            
            String regex = "[a-zA-Z0-9_]+@[a-zA-Z0-9]+\\.[a-zA-Z]+)+";
            
            boolean tf = email.matches(regex);
            if(tf){
                System.out.println("是邮箱");
            }else{
                System.out.println("不是邮箱");
            }
            
        }
    }
    

    正则拆分字符串

    string支持正则表达式方法二:

    String[] split(String regex)
    

    将当前字符串按照满足正则表达式的部分进行拆分,返回拆分后的每段内容

    package day02;
    /**
     * 字符串支持正则表达式方法二:
     * String[] split(String regex)
     * 将当前字符串中满足给定正则表达式的部分拆分,将
     * 剩下的所有部分以一个数组的形式返回。
     * @author adminitartor
     *
     */
    public class String_split {
        public static void main(String[] args) {
            String str = "abc123def456ghi789jkl";
            /*
             * 根据数字拆分,保留所有字母部分
             */
            String[] data = str.split("[0-9]+");
            System.out.println("拆分出"+data.length+"项");
            
            for(int i=0;i<data.length;i++){
                System.out.println(data[i]);
            }
            
        }
    }
    

    正则替换字符串

    String支持正则表达式方法三:

    String replaceAll(String regex,String str)
    

    将当前字符串中满足正则表达式的部分替换为给定的内容。

    package day02;
    /**
     * 字符串支持正则表达式方法三:
     * String replaceAll(String regex,String str)
     * 将当前字符串中满足正则表达式的部分替换为给定内容
     * @author adminitartor
     *
     */
    public class String_replaceAll {
        public static void main(String[] args) {
            String str = "abc123def456ghi789jkl";
            /*
             * 将当前字符串中的数字部分替换为"#NUMBER#"
             */
            str = str.replaceAll("\\d+", "#NUMBER#");
            System.out.println(str);
        }
    }
    

    练习1:图片重命名

    package day02;
    /**
     * 图片重命名
     * @author adminitartor
     *
     */
    public class Test1 {
        public static void main(String[] args) {
            String imgName = "123.jpg";
            
    //      String[] names = imgName.split("\\.");
    //      
    //      long time = System.currentTimeMillis();
    //      
    //      imgName = time + "." + names[1];
    //      System.out.println(imgName);
            
            
            String name = imgName.substring(imgName.indexOf("."));
            imgName = System.currentTimeMillis()+name;
            System.out.println(imgName);
        }
    }
    

    练习2:替换敏感词汇

    package day02;
    
    public class Test2 {
        public static void main(String[] args) {
            String regex = "(wqnmlgb|nc|cnm|mdzz|djb|sb|nmlgb)";
            String message = "wqnmlgb!你这个sb!你怎么这么的nc!nmlgb!你个djb!";
            
            message = message.replaceAll(regex, "****");
            System.out.println(message);
        }
    }
    

    相关文章

      网友评论

        本文标题:正则表达式

        本文链接:https://www.haomeiwen.com/subject/xqpgdltx.html