Java代码怎么正确使用正则表达式

本文详细介绍了正则表达式的概念、字符类、逻辑运算符、预定义字符和数量词的用法,通过实例演示了`split()`和`replaceAll()`方法的应用。深入理解并学习如何在字符串处理中利用正则进行高效匹配和替换。
摘要由CSDN通过智能技术生成

正则表达式

  • 正则表达式是对字符串做判断的。可以使用正则表达式的规则快速简单的判断出字符串是否符合规则。

  • 字符类

    [abc]    :[]表示一个字符,里面写了abc表示这个字符可以是a或b或c
    [^abc]   :代表除a,b,c以外的任何字符
    [a-z]    :代表a到z这些所有的小写字母都可以
    [0-9]    :代表的是所有的数字都可以
    [a-z0-9] :小写字母和数字都可以
    
  • 逻辑运算符

    [a-z&&^d]	:可以是除了d之外的所有小写字母
    [a|b|c]     :a或b或c 和[abc]效果是一样的,所以这个不用
    
  • 预定义字符

    .   :表示可以匹配任何字符
    \d  :表示0-9的数字,和[0-9]的效果是一样的
    \w  :表示单词字符,和[a-zA-Z_0-9]的效果是一样的
    
  • 数量词

    ? 	 : 表示0次或1次
    *    : 表示任意次
    +    : 表示1次或多次
    {n}  : 必须出现n次
    {n,} : 至少出现n次
    {n,m}: 可以出现n到m次
    
  • 分组括号

    ()代表分组,第一对儿小括号是第一组,二个对儿小括号是第二组
    
  • 代码演示

    public class Demo02正则演示 {
        public static void main(String[] args) {
    
    
    
            //字符串和正则表达式判断的方法
            //只能是一个字符,且必须是abc中的一个
            //boolean b = s.matches("[abc]");
    
            //只能是一个字符,且必须是abc以外的字符
            //boolean b = s.matches("[^abc]");
    
            //必须是两个字符,且第一个字符是abc中的一个,第二个字符是def中的一个
            //boolean b = s.matches("[abc][def]");
    
            //可以匹配一个任何字符
            //boolean b = s.matches(".");
    
            //可以匹配一个数字
            //boolean b = s.matches("\\d");
    
    
            //出现0次或1次单词字符
            //boolean b = s.matches("\\w?");
    
            //出现一次或多次数字
            //boolean b = s.matches("\\d+");
    
            String s = "哈哈哈";
            //第一位是单词字符,后面出现2到4个数字字符
            //boolean b = s.matches("\\w\\d{2,4}"); //a0001-true   B12-true   123-true
    
    
            //呵呵    嘿嘿   哈哈    AA    bb
    
            //第一对儿()表示第一组,\\1表示再出现一次第一组的内容
            //boolean b = s.matches("(.)\\1");
    
            //第一对儿()表示第一组,\\1表示再出现一次第一组的内容{2}表示前面的内容出现2次
            boolean b = s.matches("(.)\\1{2}");    //哈哈哈
            
            
            String s = "哼哈哈哼";
            //(.)表示第一组是任意字符  (.)表示第二组是任意字符  \\2表示第二组再出现一次  \\1表示第一组再出现一次
            //一个组里面不是只能写一个字符可以任意写
            boolean b = s.matches("(.)(.)\\2\\1");
            
            
            System.out.println(b);
        }
    }
    
  • 两个字符串中和正则表达式相关的方法

    • split()

      public class Demo03和正则相关的方法 {
          public static void main(String[] args) {
      /*
              //split()
              String s = "123,456,789";
      
              //split():切割
              //按照,切割
              String[] arr = s.split(",");
      
              System.out.println(arr.length);   //3
       */
      
              //-------------------------------------------------
      
              //split()
              String s = "123.456.789";
      
              //split():切割
              //按照,切割
              //方法的参数要的其实是一个正则表达式, .代表的是任意字符
              //如果要让.代表点本身不让他代表任意字符,就需要转移
              String[] arr = s.split("\\.");
      
              System.out.println(arr.length);   //3
          }
      }
      
    • replaceAll()

      public class Demo04和正则相关的方法 {
      	public static void main(String[] args) {
          		String s = "just do it,wuyanzu521 nothing id impossible99";
      
          	   	//replace() :用新的字符串代替旧的字符串
      
         		    //用*把d都替换掉
         		  	System.out.println(s.replace("d","*"));
      
      
       		    //replaceAll()  :也是用新的字符串替换旧的字符串,但是第一个参数可以用正则
      
         		   //.表示任意字符   在此时把所有字符都换成*
                 //System.out.println(s.replaceAll(".","*"));
      
          	  //把每个数字换成*
                //System.out.println(s.replaceAll("\\d","*"));
      
               //把每段数字换成一个*
               System.out.println(s.replaceAll("\\d+","*"));
          }
       }```
      
      
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值