Java 正则表达式分组匹配

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

分组匹配 可以判断是否满足正则表达式,然后提取出子串。
在这里插入图片描述
有些时候电话号码是以 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.rhkb.cn/news/181340.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从NetSuite Payment Link杂谈财务自动化、数字化转型

最近在进行信息化的理论学习,让我有机会跳开软件功能,用更加宏大的视野,来审视我们在哪里,我们要到哪去。 在过去20多年,我们的财务软件经历了电算化、网络化、目前处于自动化、智能化阶段。从NetSuite这几年的功能发…

【vue2高德地图api】04-poi搜索

系列文章目录 文章目录 系列文章目录前言一、高德地图文档入口二、使用步骤1.创建文件以及路由2.编写页面代码3.样式4变量以及方法5.编写查询方法 总结 前言 提示:这里可以添加本文要记录的大概内容: 本篇要实现的功能,看下图 提示&#x…

【从零开始学习Redis | 第五篇】基于布隆过滤器解决Redis的穿透问题

前言: 在如今的开发中,使用缓存中间件Redis已经成为一项很广泛的技术,Redis的高性能大大优化了我们的服务器性能,缓解了在高并发的情况下服务器的压力。它基于缓存的形式,在内存中保存数据,减少对磁盘的IO操…

制造行业数字化运维破局之道

项目背景 某大型汽车制造集团,致力于通过数字化、智能化运营手段为用户提升提供高品质的汽车产品和服务。IT部门不仅为内外部持续提供服务,同时为业务运营与核心系统运行提供重要支撑。数字化运维作为数字化转型的核心基础,不但要保障数据安…

网络编程 - HTTP协议

目录 HTTP协议格式 一,请求格式 1.1 URL的基本格式 1.2 方法(method) 1.3 请求头header 二,响应格式 2.1 状态码 HTTP协议格式 HTTP协议与之前讲的TCP/IP协议不同,HTTP协议要分为两个部分——请求和响应,也就是一种"一…

尚硅谷Docker基础篇和Dockerfile超详细整合笔记

Docker基础篇DockerFile Docker:您要如何确保应用能够在这些环境中运行和通过质量检测?并且在部署过程中不出现令人头疼的版本、配置问题,也无需重新编写代码和进行故障修复?而这个就是使用容器。Docker解决了运行环境和配置问题…

linux 创建git项目并提交到gitee(保姆式教程)

01、git安装与初始化设置 mhzzjmhzzj-virtual-machine:~/work/skynetStudy$ apt install mhzzjmhzzj-virtual-machine:~/work/skynetStudy$ git config --global user.name "用户名" mhzzjmhzzj-virtual-machine:~/work/skynetStudy$ git config --global user.ema…

Java 8 新特性 Stream 的使用场景(不定期更新)

方便在写代码的过程中直接使用,好记性不如好文章,直接 CV 改了直接用。提高 办(摸)公(鱼)效(时)率(间), 不然就直接问 GPT 也不是说不行。 只符合…

操作系统学习与思考

x86体系架构 x86是因特尔8086代芯片的CPU总线位数以及寄存器种类的规范,大部分操作系统都是以该规范作为基准来生产的 计算机组成 CPU,可以根据程序计数器进行取指令操作,并根据指令执行运算(加、减、乘、除)。运算所…

【hcie-cloud】【1】华为云Stack解决方案介绍、华为文档获取方式 【上】

文章目录 华为文档获取方式前言云计算发展背景国家政策、社会发展驱动数字经济开启新时代深化数字化转型提升效率,国家数字主权云进入落地阶段从Cloud-Based到Cloud-Native,两种模式长期并存适合政企智能升级的云华为云Stack,政企智能升级首选…

MySQL InnoDB数据存储结构

1. 数据库的存储结构:页 索引结构给我们提供了高效的索引方式,不过索引信息以及数据记录都是保存在文件上的,确切说是存储在页结构中。另一方面,索引是在存储引擎中实现的,MySQL服务器上的存储引擎负责对表中数据的读…

如何远程访问WAMP搭建的内网Web站点?

花生壳是由贝锐自主研发的域名解析工具,可帮助用户实现外网访问到局域网内搭建的各类办公系统。以发布网站服务为例,下面就给大家演示下如何通过花生壳实现外网访问WAMP站点。 1. 搭建WAMP站点 (1)首先,用户需在本地…

Photoshop图片处理

工具 Photoshop剪映 步骤 打开photoshop 工具主界面 2. 导入素材图片 或者直接将图片拖入主界面 3. 双击图层,将背景图改为可编辑图层 4. 使用多边形套索工具勾画需要搽除的区域 5. 希望删除的区域使用多边形套索工具勾画出来后, 按“del”键&a…

关于编程不得不说的事

这些年,互联网爆炸式的发展,促生了无数程序员,也促生了大量 IT培训机构。短短数年间,科班出生的程序员和培训机构出生的程序员呈指数增长。程序员的职业也不再是金饭碗。写了这么多代码,有些感触,所以写下来…

搭建WAMP网站教程(windows+apache+mysql+php)

之前为了学习网络安全,从搭建网站学起,对网站运行有个初步的了解。 今天翻到了之前的笔记,顺手发到csdn上了。 搭建网站步骤 一、Apache 安装Apache,下载Apache之后把Apache解压,此处解压到C:\目录下 2.然后要记得安…

【Java 进阶篇】Java Cookie共享:让数据穿越不同应用的时空隧道

在Web开发中,Cookie是一种常见的会话管理技术,用于存储和传递用户相关的信息。通常,每个Web应用都会在用户的浏览器中设置自己的Cookie,以便在用户与应用之间保持状态。然而,有时我们需要在不同的应用之间共享Cookie数…

Docker DeskTop安装与启动(Windows版本)

一、官网下载Docker安装包 Docker官网如下: Docker官网不同操作系统下载页面https://docs.docker.com/desktop/install/windows-install/ 二、安装Docker DeskTop 2.1 双击 Docker Installer.exe 以运行安装程序 2.2 安装操作 默认勾选,具体操作如下…

【安全】Java幂等性校验解决重复点击(6种实现方式)

目录 一、简介1.1 什么是幂等?1.2 为什么需要幂等性?1.3 接口超时,应该如何处理?1.4 幂等性对系统的影响 二、Restful API 接口的幂等性三、实现方式3.1 数据库层面,主键/唯一索引冲突3.2 数据库层面,乐观锁…