正则表达式的通用语法以及用法作用

简介: 正则表达式的通用语法以及用法作用

一、正则表达式语法

           (1)范围匹配 [ ] (一个中括号表示匹配一个)

                 [abc]: 
                        匹配abc中任意一个字符
                 [a-z]: 
                        匹配小写字母a-z中的一个
                 [A-Z]: 
                        匹配大写字母A-Z中的一个
                 [0-9]: 
                        匹配数字0-9中的一个

                 组合匹配:
                      [a-zA-Z0-9]:
                                 匹配a-z或者A-Z或者0-9之间的任意一个字符
                      [a-dm-p]: 
                                 匹配a-d或m-p之间的任意一个字符


                 排除:
                     [^abc]:
                            匹配除a、b、c之外的任意一个字符    //^在中括号里面表示非的意思
                     [^a-z]:
                            匹配除小写字母外的任意一个字符

                    代码演示

public class Test {
    public static void main(String[] args) {

        //匹配abc中任意一个字符。
        System.out.println("A".matches("[abc]"));   //false
        System.out.println("ab".matches("[abc]"));   //false
        System.out.println("a".matches("[abc]"));  //true


        System.out.println("---------------------------------------");

--------------------------------------------------------------------------------------------------
    
    
        //[a-z]:匹配小写字母a-z中的一个
        System.out.println("B".matches("[a-z]"));   //false
        System.out.println("b".matches("[a-z]"));  //true


        System.out.println("---------------------------------------");
        
        
----------------------------------------------------------------------------------------------------

        //[a-zA-Z0-9]:匹配a-z或者A-Z或者0-9之间的任意一个字符

        System.out.println("我".matches("[a-zA-Z0-9]")); //false

        System.out.println("0".matches("[a-zA-Z0-9]")); //true
        System.out.println("0".matches("[a-zA-Z0-9]")); //true
        System.out.println("f".matches("[a-zA-Z0-9]")); //true
        System.out.println("A".matches("[a-zA-Z0-9]")); //true


        //这里加了一个空格,匹配范围就会更改为[a-z A-Z0-9]:
        //         匹配a-z或者空格或者A-Z或者0-9之间的任意一个字符

        System.out.println(" ".matches("[a-z A-Z0-9]")); //true

        
------------------------------------------------------------------------------------------------------        

        System.out.println("------------------------");


        System.out.println("A".matches("[^A-Z]")); //false
        System.out.println("a".matches("[^A-Z]")); //true
        System.out.println("0".matches("[^A-Z]")); //true


    }
}

在这里插入图片描述


           (2)预定义字符

              ".": 
                    匹配一个任意字符
                        
              "\d": 
                    匹配一个数字字符,相当于[0-9]  
              "\D": 
                    匹配一个非数字,相当于[^0-9]
                        
              "\s": 
                    匹配一个空白字符 
              "\S": 
                    匹配一个非空白字符
                        
              "\w": 
                    匹配一个单词字符,包括大小写字母,数字,下划线,相当于 [a-zA-Z0-9_]
              "\W" :
                    匹配一个非单词字符

               ^  :  
                   匹配字符串的开始(在集合字符里[^a]表示非(不匹配)的意思
                       
               $  :  
                    匹配字符串的结束

     注意:有\的记得加\,变成\\,表转义

           如:  \\d \\D \\s  \\S  \\w  \\W

                    代码演示

public class Test2 {

    public static void main(String[] args) {

        //匹配任意一个字符
        System.out.println(".".matches("."));   //true

        //匹配任意三个字符
        System.out.println("a".matches("...")); //false

        System.out.println("-----------------------------------------");

        //匹配是数字开头和数字结束的三个数字字符
        System.out.println("02a".matches("^\\d\\d\\d$"));  //false
        System.out.println("a12".matches("^\\d\\d\\d$"));  //false
        System.out.println("a1a".matches("^\\d\\d\\d$"));  //false
        System.out.println("250".matches("^\\d\\d\\d$"));  //true

    }
}

在这里插入图片描述


           (3)数量词(限定符)(放在后面)

                       ?      0次或1次
                                  
                       *      0次或多次 (任意次)
                                  
                       +      1次或多次
                                  
                       {n}    重复n次
                                  
                       {n,}   重复n次以上 (至少n次)   >=n
                                  
                       {n,m}  重复n到m次(包括n和m)
                                  
 //注意:限定符只能影响到离它最近的那个规则,如果想要影响整体,就给那个整体加()     


// 如:
        需要匹配 over!三次

        System.out.println("over!over!over!".matches("over!{3}"));  //false ,只能影响到!

        System.out.println("over!over!over!".matches("(over!){3}")); //true ,影响到整体

                    代码演示

public class Test3 {

    public static void main(String[] args) {

        //表示匹配a-z中的字符 "一次"
        System.out.println("ab".matches("[a-z]?"));   //false
        System.out.println("a".matches("[a-z]?"));   //true

        System.out.println("----------------------------");


-----------------------------------------------------------------------------------------        

        //表示匹配a-z中的字符 "任意次"
        System.out.println("abcabc".matches("[a-z]*"));  //true


        System.out.println("-------------------------");


------------------------------------------------------------------------------------------        
        

        //表示匹配a-z中至少一次
        System.out.println("ab".matches("[a-z]+"));  //true


        System.out.println("-------------------------------------");

-----------------------------------------------------------------------------------------        

        //表示匹配任意4个数字字符
        System.out.println("abcd".matches("\\d{4}"));  //false
        System.out.println("0123".matches("\\d{4}"));  //true


        System.out.println("----------------------------------");

----------------------------------------------------------------------------------------------------


        //表示匹配任意一个字符5次以上
        System.out.println("abc".matches("\\w{5,}"));     //false
        System.out.println("abcdefg".matches("\\w{5,}"));  //true

        System.out.println("-----------------------------------------");

----------------------------------------------------------------------------------------------------
    
        //表示匹配任意一个单词字符5-7次
        System.out.println("abc".matches("\\w{5,7}")); //false
        System.out.println("abcdefgh".matches("\\w{5,7}")); //false

        System.out.println("abcde".matches("\\w{5,7}"));  //true

    }
}

在这里插入图片描述


二、正则表达式作用

       *正则表达式是一个强大的字符串处理工具,是用于匹配字符串的模板,
       
       *可以对字符串进行格式校验,查找、提取、替换等操作

三、String类中支持正则表达式的方法

    * boolean matches(String regex)
        判断该字符串是否匹配指定的正则表达式
    
    * String replaceAll(String regex, String replacement)
       将该字符串中所有匹配正则表达式的内容替换成新的字符串,并返回替换后的新的字符串
    
    * String[] split(String regex)
        根据匹配规则,把字符串分割成多个子串

更多具体用法:

1.Java中String中的replace的四个方法(用于替换字符串的方法),含replace和replaceall的区别

2.Java中String的split切割字符串方法详解


四、案例

     (1)身份证案例
import java.util.Scanner;

public class Test4 {

    /*
       号码为18位,不能以数字0开头,前17位可以是数字,最后一位可以是数字或者大写字母X
     */
    public static void main(String[] args) {


        Scanner rd=new Scanner(System.in);
        String a=rd.next();

        Boolean b=a.matches("[1-9]\\d{16}[0-9X]");
        System.out.println(b);



    }
}

在这里插入图片描述


     (2)邮箱案例

在这里插入图片描述

public class Main {
    public static void main(String[] args) {


        //邮箱案例
        Scanner rd=new Scanner(System.in);
        String a=rd.next();
        boolean b=a.matches("^[a-zA-Z][a-zA-Z0-9_]{5,18}");
        System.out.println(b);


    }
}

在这里插入图片描述


作者:KJ.JK

本文仅用于交流学习,未经作者允许,禁止转载,更勿做其他用途,违者必究。
文章对你有所帮助的话,欢迎给个赞或者 star,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习

目录
相关文章
|
6天前
|
机器学习/深度学习 存储 JavaScript
正则表达式基础语法与Java、JS使用实例
正则表达式基础语法与Java、JS使用实例
74 1
|
6月前
|
C++ Python
137 python高级 - 正则表达式(re模块的高级用法)
137 python高级 - 正则表达式(re模块的高级用法)
40 0
|
6天前
|
Python
正则表达式高级用法
正则表达式是强大的文本匹配工具,常用于搜索、匹配和验证字符串。高级用法包括:捕获组(区分需要提取的内容)、非捕获组(减少开销)、零宽断言(定位匹配位置)、反向引用(匹配相同内容)、嵌入代码(实现复杂逻辑)、贪婪与非贪婪匹配(控制匹配范围)和递归匹配(处理嵌套结构)。了解这些高级技巧能提升字符串操作效率。示例展示了验证Email、电话号码、提取URL和清理多余空格的正则表达式应用。
|
6天前
|
机器学习/深度学习 Python
请解释Python中的正则表达式是什么?并举例说明其用法。
【2月更文挑战第26天】【2月更文挑战第86篇】请解释Python中的正则表达式是什么?并举例说明其用法。
|
6天前
正则表达式语法讲解
正则表达式语法讲解
19 0
|
9月前
|
存储 索引 Python
【100天精通python】Day23:正则表达式,基本语法与re模块详解示例
【100天精通python】Day23:正则表达式,基本语法与re模块详解示例
87 0
|
6天前
|
Java 计算机视觉
【Java 正则表达式】简单用法,注意点,我学不会正则
【Java 正则表达式】简单用法,注意点,我学不会正则
|
6天前
|
JavaScript 前端开发 物联网
正则表达式的用法(判断是否为手机号格式)
正则表达式的用法(判断是否为手机号格式)
331 1
|
7月前
|
运维 Java 应用服务中间件
【Nginx用法】nginx location正则表达式写法,详解Nginx location 匹配规则(很详细哦)
【Nginx用法】nginx location正则表达式写法,详解Nginx location 匹配规则(很详细哦)
94 0
|
9月前
正则表达式的用法
正则表达式的用法
52 1