正则表达式

Java正则表达式

捕获分组

普通捕获组

    /**
     * 1. 普通捕获组是按照(即左括号出现的顺序进行分组
     * 2. 对于所有的正则表达式,捕获组0都是正则表达式匹配的全部内容
     */
    @Test
    void test() {
        String str = "2024-05-01";
        Pattern pattern = Pattern.compile("(\\d{4})-(\\d{2})-(\\d{2})");
        Matcher matcher = pattern.matcher(str);
        if (matcher.find()) {
            System.out.println(matcher.group(0)); // 2024-05-01
            System.out.println(matcher.group(1)); // 2024
            System.out.println(matcher.group(2)); // 05
            System.out.println(matcher.group(3)); // 01
        }
    }

命名捕获组

	/**
     * 在()内添加?<name>,对捕获组进行命名
     */
    @Test
    public void test() {
        String str = "2024-05-01";
        Pattern pattern = Pattern.compile("(?<year>\\d{4})-(?<month>\\d{2})-(?<day>\\d{2})");
        Matcher matcher = pattern.matcher(str);
        if (matcher.find()) {
            System.out.println(matcher.group(0)); // 2024-05-01
            System.out.println(matcher.group("year")); // 2024
            System.out.println(matcher.group("month")); // 05
            System.out.println(matcher.group("day")); // 01
        }
    }

非捕获组

	/**
     * 非捕获组
     */
    @Test
    public void test() {
        String str = "2024-05-01";
        Pattern pattern = Pattern.compile("(?<year>\\d{4})-(?:\\d{2})-(?<day>\\d{2})");
        Matcher matcher = pattern.matcher(str);
        if (matcher.find()) {
            System.out.println(matcher.group(0)); // 2024-05-01
            System.out.println(matcher.group("year")); // 2024
            System.out.println(matcher.group(1)); // 2024
            System.out.println(matcher.group(2)); // 01
            System.out.println(matcher.group(3)); // java.lang.IndexOutOfBoundsException: No group 3
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值