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

正则表达式非捕获分组?:

一个使用 Java 正则表达式的具体例子,展示了 (ab)+(?:ab)+ 的不同:

示例 1:使用 (ab)+(捕获分组)

import java.util.regex.*;

public class RegexExample {
    public static void main(String[] args) {
        String text = "ababab";
        
        // 使用捕获分组
        String regex = "(ab)+";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(text);

        while (matcher.find()) {
            // 捕获组 1 是每个 'ab' 的匹配
            System.out.println("Matched: " + matcher.group(1));
        }
    }
}
 

运行结果:

Matched: ab

Matched: ab

Matched: ab

解释:

  • 在这个例子中,(ab)+ 会将每个 ab 捕获为分组 1,并在每次匹配时输出 ab
  • 每个匹配的 ab 都被捕获并打印出来。

示例 2:使用 (?:ab)+(非捕获分组)

import java.util.regex.*;

public class RegexExample {
    public static void main(String[] args) {
        String text = "ababab";
        
        // 使用非捕获分组
        String regex = "(?:ab)+";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(text);

        while (matcher.find()) {
            // 这里没有捕获分组,所以直接输出匹配的字符串
            System.out.println("Matched: " + matcher.group());
        }
    }
}
 

运行结果:

Matched: ababab

解释:

  • 在这个例子中,(?:ab)+ 会匹配 ababab 整个字符串,但由于使用了非捕获分组,它不会将 ab 保存到捕获组中。
  • matcher.group() 只返回整个匹配的字符串,即 ababab,没有对单独的 ab 进行捕获。

总结:

  • 使用 (ab)+ 时,每次匹配到的 ab 都会被捕获并存储,可以通过 matcher.group(1) 获取。
  • 使用 (?:ab)+ 时,匹配到的整个字符串 ababab 会被匹配,但没有分组存储每个 ab,所以无法提取每个 ab

相关文章:

  • AI训练服务器概述
  • 混合云安全实战:如何构建稳固的云安全防线?
  • 【ARM AMBA AHB 入门 3 -- AHB 总线介绍】
  • 数字康养新范式:七彩喜平台重构智慧养老生态的深度实践
  • 欧姆龙 PLC串口转网口模块cjcp系列SG-CJCP-110
  • 浅谈广告投放从业者底层思维逻辑
  • 结构体的学习
  • eclipse开发环境中缺少JavaEE组件如何安装
  • shell操作文件上传
  • 第十节:图像处理基础-图像算术运算 (加法、减法、混合)
  • C++ 静态成员
  • void*在c语言中什么意思(非常详细)
  • 【MVCP】基于解纠缠表示学习和跨模态-上下文关联挖掘的多模态情感分析
  • 5月8日直播见!Atlassian Team‘25大会精华+AI实战分享
  • 蓝桥杯2025年第十六届省赛真题-水质检测
  • oracle 优化器
  • 【数据结构入门训练DAY-28】蓝桥杯算法提高VIP-产生数
  • 从交互说明文档,到页面流程图设计全过程
  • NGINX `ngx_http_charset_module` 字符集声明与编码转换
  • K8S 基于本地存储的持久卷
  • 著名文物鉴赏家吴荣光逝世,享年78岁
  • 深圳市政协原副主席王幼鹏被“双开”
  • 匈牙利外长称匈方已驱逐两名乌克兰外交官
  • 异域拾异|大脚怪的形状:一项神秘社会学研究
  • 悬疑推理联合书单|虫神山事件
  • 普雷沃斯特当选新一任天主教罗马教皇