当前位置: 首页 > news >正文

【JavaEE进阶系列 | 从小白到工程师】正则表达式的语法使用

文章目录

  • 💨更多相关知识👇
    • 一、正则表达式的语法
      • 🍂范围匹配 [ ]
        • 🌟代码演示
      • 🍂预定义字符
        • 🌟代码演示
      • 🍂数量词
        • 🌟代码演示
    • 二、正则表达式的作用
    • 三、String类中支持正则表达式的方法
    • 四、案例
      • ⭐身份证案例
      • ⭐邮箱案例
        • 🌟代码演示
  • 作者:KJ.JK

💨更多相关知识👇

💖Spring中的bean的配置、作用范围、生命周期详细描述及使用(XML版上篇)

💖异常处理与解决方案详解上篇

💖异常处理与解决方案详解下篇

💖Math类与System类的常用方法使用

💖JavaEE中的静态方法定义、方法重载要求、return作用详解

💖List接口的常用方法,精华总结

💖JavaEE中的Stream流的常用方法

💖JavaEE中的Stream流知识点使用,精华总结,一文直接上手


🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈
 
🍂个人博客首页: KJ.JK
 
欢迎大家点赞👍收藏💖评论💬关注🔒
 
💖源码获取 | 💻学习交流 | 🤝商务合作 | 💨私信作者
 
💨推荐一款实用的模拟面试、刷题练习算法的神器、适用于所有的程序猿👉点击开始免费刷题,跟着博主走上巅峰💪


一、正则表达式的语法


🍂范围匹配 [ ]


                 [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 Demo {
    public static void main(String[] args) {




     /*
             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]:匹配除小写字母外的任意一个字符。


      */





        //匹配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


    }
}


请添加图片描述


🔥系列热门专栏🔥:
 
⚡《JavaEE进阶序列 | 从小白到工程师》系列文章⚡
 
⚡《JavaEE项目实战》系列文章⚡
 
⚡《JavaSwing项目合集》系列文章⚡
 
⚡《数据分析中的pandas》系列文章⚡


🍂预定义字符


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

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

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

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

🌟代码演示


public class Demo {


    /*
      2.预定义字符

          “.”     : 匹配一个任意字符
          "\d“  : 匹配一个数字字符,相当于[0-9]
          "\D“  : 匹配一个非数字,相当于[^0-9]

          "\s“   : 匹配一个空白字符
          "\S“   : 匹配一个非空白字符

          "\w“  : 匹配一个单词字符,包括大小写字母,数字,下划线,相当于[a-zA-Z0-9_]
          "\W“  :匹配一个非单词字符

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

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

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


     */
    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



    }
}

请添加图片描述


🍂数量词


                              ?      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 Demo {

    /*
        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 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):根据匹配规则,把字符串分割成多个子串


四、案例


⭐身份证案例


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);



    }
}

请添加图片描述


⭐邮箱案例


请添加图片描述


🌟代码演示


public class Demo {
    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);


//        System.out.println("123".matches("[123]."));
    }
}

请添加图片描述


作者:KJ.JK

文章对你有所帮助的话,欢迎给个赞或者 star,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习

相关文章:

  • LIO-SAM框架:点云匹配前戏之初值计算及局部地图构建
  • 机器学习实战(5)——支持向量机
  • 手撕前端面试题(Javascript~事件委托、数组去重、合法的URL、快速排序、js中哪些操作会造成内存泄漏......
  • lombok学习
  • Vue操作数组的几种常用方法(map、filter、forEach、find 和 findIndex 、some 和 every)
  • 【Docker】傻瓜式开发
  • <数据结构> - 数据结构在算法比赛中的应用(上)
  • python中的函数和类的区别
  • 【计算机网络】UDP/TCP协议
  • python并发编程 多线程/多进程/协程
  • 【web-攻击用户】(9.5)同源策略:与浏览器扩展、HTML5、通过代理服务应用程序跨域
  • 大数据——Spark-SQL自定义函数UDF、UDAF、UDTF
  • 浅浅的 Cmake
  • 【JavaScript 进阶教程】函数的定义 调用 及 this指向问题
  • 14天刷爆LeetCode算法学习计划——Day02双指针(1)
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • Date型的使用
  • JavaScript标准库系列——Math对象和Date对象(二)
  • LeetCode29.两数相除 JavaScript
  • miaov-React 最佳入门
  • PAT A1017 优先队列
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • Vue2.x学习三:事件处理生命周期钩子
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 聚类分析——Kmeans
  • 学习使用ExpressJS 4.0中的新Router
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • (ibm)Java 语言的 XPath API
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (转)创业的注意事项
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • **CI中自动类加载的用法总结
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET 8.0 中有哪些新的变化?
  • .net MVC中使用angularJs刷新页面数据列表
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • /bin/bash^M: bad interpreter: No such file or directory
  • /proc/stat文件详解(翻译)
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节
  • [2019.2.28]BZOJ4033 [HAOI2015]树上染色
  • [Android] Android ActivityManager
  • [C#基础知识系列]专题十七:深入理解动态类型
  • [dfs搜索寻找矩阵中最长递减序列]魔法森林的秘密路径
  • [Flutter]WindowsPlatform上运行遇到的问题总结
  • [fsevents@^2.1.2] optional install error: Package require os(darwin) not compatible with your platfo
  • [go 反射] 进阶
  • [hdu 3652] B-number