Java常用API_正则表达式_分组——捕获分组与非捕获分组介绍与练习

        在正则表达式中,从左到右第一个左括号确定为第一组,继续往右看再有左括号它表示的组数就加一。我们可以在正则表达式中使用 \\组数 的方法表示第几组,如\\1表示第一组的内容。

1.捕获分组

        捕获分组就是把这一组的数据捕获出来,后续还要继续使用本组的数据。

练习一:

题目需求:

需求1:判断一个字符串的开始字符和结束字符是否一致,只考虑一个字符

             举例:a123a b456b 17891 &abc&

需求2:判断一个字符串的开始部分和结束部分是否一致,可以有多个字符

             举例:abc123abc b456b 123567123 &!abc&!

需求3:判断一个字符串的开始部分和结束部分是否一致,开始部分内部每个字符也需一致

             举例:aaa123aaa bbb456bbb 111567111 &&abc&&

编写代码:
public class Test13 {//捕获分组就是把这一组的数据捕获出来,在用一次//需求1:判断一个字符串的开始字符和结束字符是否一致,只考虑一个字符//举例:a123a b456b 17891 &abc&//需求2:判断一个字符串的开始部分和结束部分是否一致,可以有多个字符//举例:abc123abc b456b 123567123 &!abc&!//需求3:判断一个字符串的开始部分和结束部分是否一致,开始部分内部每个字符也需一致//举例:aaa123aaa bbb456bbb 111567111 &&abc&&public static void main(String[] args) {//需求1:判断一个字符串的开始字符和结束字符是否一致,只考虑一个字符System.out.println("--------需求1--------");String regex1 = "(.).+\\1";System.out.println("a123a".matches(regex1));System.out.println("b456b".matches(regex1));System.out.println("17891".matches(regex1));System.out.println("&abc&".matches(regex1));System.out.println("12345".matches(regex1));//需求2:判断一个字符串的开始部分和结束部分是否一致,可以有多个字符System.out.println("--------需求2--------");String regex2 = "(.+).+\\1";System.out.println("abc123abc".matches(regex2));System.out.println("b456b".matches(regex2));System.out.println("123567123".matches(regex2));System.out.println("&!abc&!".matches(regex2));System.out.println("12345".matches(regex2));//需求3:判断一个字符串的开始部分和结束部分是否一致,开始部分内部每个字符也需一致System.out.println("--------需求3--------");String regex3 = "((.)\\2*).+\\1";System.out.println("aaa123aaa".matches(regex2));System.out.println("bbb456bbb".matches(regex2));System.out.println("111567111".matches(regex2));System.out.println("&&abc&&".matches(regex2));System.out.println("12345".matches(regex2));}
}
运行结果:

练习二:

        这个练习我们会使用到在正则表达式外部使用某组的数据,在正则表达式内部使用某组数据时,我们通过 \\组数 获取,在正则表达式外部使用某组数据,我们要通过 $组数 来获取

题目需求:

需求:将字符串:我要学学学编编编编程程程程程

           替换为:我要学编程

编写代码:
public class Test14 {public static void main(String[] args) {String str = "我要学学学编编编编程程程程程";//regex为重复汉字的正则表达式String result = str.replaceAll("(.)\\1+", "$1");System.out.println(result);}
}
运行结果:

2.非捕获分组

        分组之后不需要使用本组数据,仅仅是把数据括起来。

        特点:不占用组号

        常用方式:(?:)  (?=)  (?!)  第一种最多使用

练习一:

题目需求:

        简单的验证身份证号,要求18位组成,第一位不为0,其余都为数字,最后一位可以是数字也可以是X和x。

编写代码:
public class Test15 {public static void main(String[] args) {String regex = "[1-9]\\d{16}(?:\\d|X|x)";System.out.println("130111111111111111".matches(regex));}
}
运行结果:

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

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

相关文章

SpringBoot和Vue2项目配置https协议

1、SpringBoot项目 ① 去你自己的云申请并下载好相关文件,SpringBoot下载的是Tomcat(默认),Vue2下载的是Nginx ② 将下载的压缩包里面的.pfx后缀文件拷贝到项目的resources目录下 ③ 编辑配置文件 (主要是框里面的内…

基于wsl的Ubuntu20.04上安装桌面环境

在子系统Ubuntu20.04上安装桌面环境 1. 更换软件源 由于Ubuntu默认的软件源在国外,有时候后可能会造成下载软件卡顿,这里我们更换为国内的阿里云源,其他国内源亦可。 双击打开Ubuntu20.04 LTS图标,在命令行中输入 # 备份原来的软…

创意解决方案:如何将作品集视频集中于一个二维码或链接中?

引言:随着面试环节的进一步数字化,展示自己的作品集成为了求职过程中的重要一环。但除了使用传统的方式,如百度网盘或直接发送多个视频链接,有没有更便捷的方法将作品集的多个视频放在一个链接中呢? 本文将介绍一种创意解决方案…

探索未知,守护已知:天通野外摄像机PS02——生物识别保护的新前沿

随着全球生态环境的日益恶化和野生动物种群数量的不断减少,生物多样性保护已经成为全球性的紧迫议题。在这一背景下,野外无人值守卫星图传监测站的应用,特别是在生物识别保护领域,展现出了巨大的潜力和价值。 创新的监测技术 野外…

使用 Citavi 和 NVivo 简化您的文献综述和研究分析

NVivo 是一款支持定性研究方法和混合研究方法的软件。它可以帮助您收集、整理和分析访谈、焦点小组讨论、问卷调查、音频等内容。NVivo(1.0版)是Windows和Mac的主要版本。遵循最新的主要版本NVivo 12(Windows和Mac)。 NVivo 强大…

类和对象中阶1⃣️-默认成员函数(构造函数 析构函数)

目录 1.类的6个默认成员函数 2.构造函数 2.1 概念 3.析构函数 3.1 概念 3.2 特性 1.类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成…

Linux安装Oracle11g(无图形界面下的静默安装)

Oracle11g安装文档-Linux静默安装 环境准备安装数据库配置监听器创建数据库测试打开防火墙 环境准备 创建组和用户 [rootlocalhost ~]# groupadd oinstall #创建oinstall组 [rootlocalhost ~]# groupadd dba  #创建dba组 [rootlocalhost ~]# useradd -g oinstall -G dba -m…

Linux云计算之Linux基础3——Linux系统基础2

1、终端 终端(terminal):人和系统交互的必要设备,人机交互最后一个界面(包含独立的输入输出设备) 物理终端(console):直接接入本机器的键盘设备和显示器虚拟终端(tty):通过软件方式虚拟实现的终端。它可以…

websocket实践

文章目录 背景WebSocket API使用场景优点 实例步骤 1: 设置 WebSocket 服务器步骤 2: 创建客户端 HTML 页面步骤 3: 测试 WebSocket 通信注意事项实际操作 参考资料 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。它使得浏览器和服务器只需建立一个连接,…

金三银四面试题(十九):MySQL中的锁

在MySQL中,锁是非常重要的,特别是在多用户并发访问数据库的环境中,因此也是面试中常问的话题。 请说说数据库的锁? 关于MySQL 的锁机制,可能会问很多问题,不过这也得看面试官在这方面的知识储备。 MySQL …

07 Php学习:运算符

PHP 算术运算符 在 PHP 中,算术运算符用于执行基本的数学运算,包括加法、减法、乘法、除法、取余数,负数运算、取反和并置运算。以下是这些运算符的详细解释和示例: 加法运算符 :用于将两个数值相加。 $a 5; $b 3;…

论文阅读——Sat2Vid

Sat2Vid: Street-view Panoramic Video Synthesis from a Single Satellite Image 提出了一种新颖的方法,用于从单个卫星图像和摄像机轨迹合成时间和几何一致的街景全景视频。 即根据单个卫星图像和给定的观看位置尽可能真实地、尽可能一致地合成街景全景视频序列。…

【汇编语言实战】统计个数(创新版)

内存中有10个分布在0至100内的正整数&#xff0c; 求小于60的数的个数num1&#xff0c;大于或等于60且小于80的数的个数num2&#xff0c;大于或等于80且小于100的数的个数num3 C语言描述该程序流程&#xff1a; #include <stdio.h> int main() {int a[]{1, 20, 95, 32,…

RecyclerView的复用与回收

目录 0.前言&#xff1a;推荐初学者阅读RecyclerView机制 1.复用与回收的关系 1.1复用流程 1.2回收流程 1.3复用与回收的先后关系 2.刷新机制 0.前言&#xff1a;推荐初学者阅读RecyclerView机制 http://t.csdnimg.cn/2hUeU 1.复用与回收的关系 滚动屏幕——“先复用&…

东方博宜 1738. 胜负对决

东方博宜 1738. 胜负对决 以为这道题很简单呢&#xff0c;结果提交两次还不对&#xff0c;气死个人~ 思路&#xff1a;这道题的重点在于看清楚题意&#xff0c;是第奇数个&#xff0c;而不是数是奇数 。 还有&#xff0c;如果按照位数的奇偶来判定&#xff0c;那在读取数组的时…

台灯哪个牌子好,五大护眼灯品牌排行分享

​当前&#xff0c;我国青少年的近视率已超过半数&#xff0c;位居全球之首&#xff0c;且近视发生年龄呈现下降趋势。长时间用眼和过度使用电子产品是导致近视高发的主要因素。面对这一挑战&#xff0c;如何改善现状成为了一个亟待解决的问题。对于儿童而言&#xff0c;降低近…

浅谈在线监测系统在水厂水质管理工程中的应用与研究

【摘要】&#xff1a;随着水厂水质管理技术和管理水平的提升&#xff0c;达到了在线监测系统通过监测数据的反馈&#xff0c;及时发现问题&#xff0c;快速处理事故&#xff0c;优化了水资源的利用率&#xff0c;提高了供水系统的稳定性和安全性&#xff0c;从而有效地提高供水…

2.网络编程-HTTP和HTTPS

目录 HTTP介绍 HTTP协议主要组成部分 GET 和 POST有什么区别 常见的 HTTP 状态码有哪些 http状态码100 HTTP1.1 和 HTTP1.0 的区别有哪些 HTTPS 和 HTTP 的区别是什么 HTTP2 和 HTTP1.1 的区别是什么 HTTP3 和 HTTP2 的区别是什么 HTTPS的请求过程 对称加密和非对称…

初识--数据结构

什么是数据结构&#xff1f;我们为什么要学习数据结构呢....一系列的问题就促使我们不得不了解数据结构。我们不禁要问了&#xff0c;学习C语言不就够了吗&#xff1f;为什么还要学习数据结构呢&#xff1f;这是因为&#xff1a;数据结构能够解决C语言解决不了的问题&#xff0…

【NLP】隐马尔可夫模型(HMM)与条件随机场(CRF)简介

一. HMM 隐马尔可夫模型&#xff08;Hidden Markov Model, HMM&#xff09;是一种用于处理含有隐藏状态的序列数据的统计学习模型。通过建模隐藏状态之间的转移关系以及隐藏状态与观测数据的生成关系&#xff0c;HMM能够在仅观察到部分信息的情况下进行状态推理、概率计算、序…