Java 正则表达式分组匹配

news2024/11/26 22:49:40

前几篇文章都是简单判断是否满足匹配规则,当需要提取匹配结果时就用到分组匹配

分组匹配 可以判断是否满足正则表达式,然后提取出子串。
在这里插入图片描述
有些时候电话号码是以 123-4567-8899 这样显示的,我们要判断某个字符串是这种形式的并分别提起三段数字。

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

public class RegexDemo {

    public static void main(String[] args) {

        Pattern p = Pattern.compile("(\\d{3})\\-(\\d{4})-(\\d{4})");
        Matcher m = p.matcher("123-4567-8899");
        if (m.matches()) {
            String s0 = m.group(0);
            String s1 = m.group(1);
            String s2 = m.group(2);
            String s3 = m.group(3);
            System.out.println("s0:"+s0);
            System.out.println("s1:"+s1);
            System.out.println("s2:"+s2);
            System.out.println("s3:"+s3);
        } else {
            System.out.println("error");
        }
    }

}

结果,

s0:123-4567-8899
s1:123
s2:4567
s3:8899

Matcher.group(index) 方法,

  • 参数传 0 表示 整个正则表达式匹配到的字符串 。
  • 参数传 1 表示第 1 个子串,
  • 参数传 2 表示第 2 个子串。
  • 参数传 n 表示第 n 个子串。(注意子串数量,防止数组越界)

注意这两种写法是不同的,

Pattern p = Pattern.compile("(\\d{3})\\-(\\d{4})-(\\d{4})");// 写法1
Pattern p = Pattern.compile("\\d{3}\\-\\d{4}-\\d{4}");// 写法2
  • 写法1 :正确的,每个子串用 () 包起来,共 3 个子串。调用 Matcher.group(index) 传 0、1、2、3 都正常。
  • 写法2 :只满足 m.matches() ,子串没有用 () 包起来,调用 Matcher.group(index) 只能传 0,
    否则报错 java.lang.IndexOutOfBoundsException: No group 1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1173152.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

总线类设备驱动——SPI

目录 一、 SPI协议简介 二、 Linux SPI驱动 三、 SPI设备驱动范例 一、 SPI协议简介 SPI(Serial Peripheral Interface)由 Motorola 开发,他并不是严格意义上的标准协议但是几乎所有的厂商都遵从这一协议,所以可以说它是一个“事实上的”协议。SPI 是同…

学习GTEx数据库

每个个体的不同的器官组织的基因(Gene)都是相同的,但为什么有的表型为肝脏组织,帮助人类代谢?有的是肌肉组织,帮助人类运动?其原因是,不同的人体组织表达的基因并不相同。 &#xff…

行业安卓主板-基于RK3568/3288/3588的AI智能网络广告机/自动售货机/收银机解决方案(三)

广告机 智能网络广告机通过网络将音视频、图片、文档、网页等自由排版创建成节目发布到终端。可针对不同的终端统一管理,统一发布;针对应用场景的集中和分散,可以选用局域网管理和云服务器管理。 自动售货机 随着物联网、大数据、人工智能的…

2024长三角大数据产业博览会(世亚智博会)数据赋能·智创未来

2024长三角国际大数据产业博览会,定于3月份在沪召开,展会始终秉承“全球视野、国家高度、产业角度、企业立场”的办会理念,实现每届展会成功、圆满、精彩举办,集聚效应和影响力不断增强。本次展会将汇聚全球大数据产业的领军企业和…

无法加载文件 C:\Program Files\nodejs\cnpm.ps1,因为在此系统上禁止运行脚本。有

cnpm : 无法加载文件 C:\Program Files\nodejs\cnpm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID135170 中的 about_Execution_Poli cies。 所在位置 行:1 字符: 1 cnpm run debug ~~~~ Categ…

CleanMyMac X2024永久激活码许可证

如果你拥有苹果电脑,那么就非常有必要在Mac上安装CleanMyMac,不是只有Windows才会产生垃圾,Mac同样的也会,定期清理Mac垃圾,可以释放磁盘空间。 CleanMyMac X 是一款流行的 Mac 清理工具,具有许多功能&…

paragon2024好用的NTFS工具

Mac OS X 对NTFS——Windows PC的主要文件系统——提供极少支持。您无法在NTFS分区中创建、删除或者修改文件或文件夹,而仅仅只能读取。Paragon NTFS for Mac官方版一直是Mac OS平台上最受欢迎的NTFS硬盘格式读取工具,有了NTFS for Mac ,安装…

Leetcode41缺失的第一个正数

思路:原地哈希表 长度为N的数组,没有出现过的正整数一定是1~N1中的一个。 此时会思考能不能用一个哈希表来保存出现过的1~N1的数,然后从 1 开始依次枚举正整数,并判断其是否在哈希表中 但是题目要求常数级别的空间,就不…

多级缓存之JVM进程缓存

1.什么是多级缓存 传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,如图: 存在下面的问题: 请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈 Redis缓存失效时&#xff0…

新麦同城到家预约上门小程序V3全开源版 vue后端+unipp开源前端+小程序端源码安装测试教程

新麦同城预约系统,是近年来快速崛起并广受好评的一站式上门服务预约平台。它集合了众多服务项目,包括家政、维修、清洁等,将原本琐碎冗杂的服务流程简化,让你享受轻松预约、专业服务一步到位的便捷生活体验。今天就与播播资源一起…

vivado 布线分析

在“ Device ”窗口中开启“ Routing Resources ” ( 布线资源 ) 即可查看具体的布线资源。 缩小时显示抽象视图。抽象视图 : • 精简穿过器件的布线。 • 根据穿过特定区域的布线数量显示不同粗细的线条。 类似地 , 布局以块…

【MongoDB】索引 - 复合索引

一、准备工作 这里准备一些学生数据 db.students.insertMany([{ _id: 1, name: "张三", age: 20, class: { id: 1, name: "1班" }},{ _id: 2, name: "李四", age: 22, class: { id: 2, name: "2班" }},{ _id: 3, name: "王五…

【backward解决方案与原理】网络模型在梯度更新时出现变量版本号机制错误

【backward解决方案与原理】网络模型在梯度更新时出现变量版本号机制错误 报错详情 错误产生背景 原理 解决方案 RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation 报错详情 模型在backward时,…

数据结构与算法 | 第三章:栈与队列

本文参考网课为 数据结构与算法 1 第三章栈,主讲人 张铭 、王腾蛟 、赵海燕 、宋国杰 、邹磊 、黄群。 本文使用IDE为 Clion,开发环境 C14。 更新:2023 / 11 / 5 数据结构与算法 | 第三章:栈与队列 栈概念示例 实现顺序栈类定义…

谈谈MySQL的底层存储

这个题目启的很大,但其实只是最近在复习MySQL知识的一点心得,比较零散。 更新数据时,底层page的变化 下面这个图,我还需要解释么? 上面的绿色是b数的索引块,分别说明了101号page的最大id是7,102号page的…

ACM MM 2023 | 清华、华为联合提出MISSRec:兴趣感知的多模态序列推荐预训练

©PaperWeekly 原创 作者 | 王锦鹏 单位 | 清华大学深圳国际研究生院 研究方向 | 多模态检索、推荐系统 序列推荐是一种主流的推荐范式,目的是从用户的历史行为中推测用户偏好,并为之推荐感兴趣的物品。现有的大部分模型都是基于 ID 和类目等信息做…

相机滤镜软件Nevercenter CameraBag Photo mac中文版特点介绍

Nevercenter CameraBag Photo mac是一款相机和滤镜应用程序,它提供了一系列先进的滤镜、调整工具和预设,可以帮助用户快速地优化和编辑照片。 Nevercenter CameraBag Photo mac软件特点介绍 1. 滤镜:Nevercenter CameraBag Photo提供了超过2…

【嵌入式 – GD32开发实战指南(ARM版本)】第2部分 外设篇 - 第2章 温湿度传感器AHT10

1 理论分析 1.1 AHT10介绍 AHT10,新一代温湿度传感器在尺寸与智能方面建立了新的标准:它嵌入了适于回流焊的双列扁平无引脚SMD封装,底面4 x 5mm ,高度1.6mm。传感器输出经过标定的数字信号,标准I2C格式。 AHT10 配有一个全新设计的ASIC专用芯片、一个经过改进的MEMS半导体…

难题来了:分库分表后,查询太慢了,如何优化?

说在前面: 尼恩社群中,很多小伙伴反馈, Sharding-JDBC 分页查询的速度超级慢, 怎么处理? 反馈这个问题的小伙伴,很多很多。 而且这个问题,也是面试的核心难题。前段时间,有小伙伴…

一看就懂的java对象内存布局

前言 Java 中一切皆对象,同时对象也是 Java 编程中接触最多的概念,深入理解 Java 对象能够更帮助我们深入地掌握 Java 技术栈。在这篇文章里,我们将从内存的视角,带你深入理解 Java 对象在虚拟机中的表现形式。 学习路线图&…