特殊的非捕获分组与非贪婪匹配

本文展示了如何在Java中使用正则表达式进行特殊非捕获分组(countr(?:y|ies))、正向前瞻(?=pattern)、负向前瞻(?!pattern)以及非贪婪匹配(1+?)的应用实例,帮助理解其实战应用。
摘要由CSDN通过智能技术生成

特殊的非捕获分组

package com.ftn.regexp;

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

//演示特殊的非捕获分组
public class Regexp_08 {
    public static void main(String[] args) {
        //非捕获
        String content = "fsjj2countryside5641countries23589country12..fns()$hjdks nbfsj dj,";

        //(?:pattern):选择匹配符,相当于 country|countries,
        String regStr = "countr(?:y|ies)";

        //(?=pattern):选择匹配符,相当于匹配 字符串 countryside|countries 中的 countr
        String regStr2 = "countr(?=yside|ies)";

        //(?!pattern):取反选择匹配符,相当于匹配不在字符串 countryside|countries 中的 countr
        String regStr3 = "countr(?!yside|ies)";
        String regStr4 = "[\\w)]+";

        Pattern pattern = Pattern.compile(regStr4);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()){
            System.out.println(matcher.group(0));
        }
    }
}

非贪婪匹配

默认为贪婪匹配

package com.ftn.regexp;

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

//演示非贪婪匹配
public class Regexp_09 {
    public static void main(String[] args) {
        String content = "fsjj2countryside5641111jjjjllll2..fns()$hjdks nbfsj dj,";

        String regStr = "1+";   //默认贪婪匹配
        String regStr2 = "1+?";   //+?:更改为非贪婪匹配

        Pattern pattern = Pattern.compile(regStr2);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()){
            System.out.println(matcher.group(0));
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值