#java #regular expression(正则表达式) #基础

Java中正则表达式

1.快速体验
package com.qj.Regexp_;
/*
 * @ClassName: regexp
 * @User: QianJueZhang
 * @Description:
 * @Date: 2022/12/29 19:02
 */

import java.util.regex.Matcher;
import java.util.regex.Pattern;

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

        String str = "11110000.00001111.10101010.01010101";
        String regStr = "(\\d\\d)(\\d\\d)";
        // 1.创建模式对象,即正则表达式对象
        Pattern pattern = Pattern.compile(regStr);

        // 2.创建匹配器,按照正则表达式regStr的规则去匹配字符串str
        Matcher matcher = pattern.matcher(str);

        // 3.开始匹配
        /* boolean b = matcher.find();
         * matcher.find()完成的任务
         * 1. 根据指定的规则,定位满足规则的子字符串(比如1111)
         * 2. 找到后,将子字符串的开始索引 记录到matcher对象的属性 int[] groups中
         *      groups[0] = 子字符串开始的下标;  groups[1] = 子字符串结束的下标+1;
         *      如果有分组时:
         *          groups[2] = 第1组子字符串的下标;  groups[2] = 第1组子字符串结束的下标+1;
         *          groups[2] = 第2组子字符串的下标;  groups[2] = 第2组子字符串结束的下标+1;
         *          ...
         *
         * 3. 同时记录oldLast的值为 子字符串结束的下标+1;即下次执行find 时,就从此下标开始匹配
         * */
        while (matcher.find()) {
            // matcher.group(0) 匹配的子字符串的开始,匹配的子字符串的结束+1
            // matcher.group(0) 匹配的子字符串其中第1组的开始,第1组的结束+1
            // ...
            // 分组数不能越界
            System.out.println("找到:" + matcher.group(0));
            System.out.println("第1组():" + matcher.group(1));
            System.out.println("第2组():" + matcher.group(2));
        }
            //  输出结果
        //        找到:1111
            //        第1组():11
            //        第2组():11
        //        找到:0000
            //        第1组():00
            //        第2组():00
        //        找到:0000
            //        第1组():00
            //        第2组():00
        //        找到:1111
            //        第1组():11
            //        第2组():11
        //        找到:1010
            //        第1组():10
            //        第2组():10
        //        找到:1010
            //        第1组():10
            //        第2组():10
        //        找到:0101
            //        第1组():01
            //        第2组():01
        //        找到:0101
            //        第1组():01
            //        第2组():01
    }
}

tips: java正则表达式默认区分字母大小写;默认贪婪匹配

正则表达式内容梳理

(待写。。。)

1.字符匹配符与选择匹配符
2.限定符
3.定位符
4.分组与特殊分组
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值