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.mzph.cn/news/799472.shtml

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

相关文章

vscode 安装vim插件配置ctrl + c/v功能

搜索Vim插件 插件介绍部分有提示操作 首先安装该插件,然后按照下述步骤设置ctrl相关的快捷键,以便于脱离im快捷键而愉快的敲代码。 1.在“设置”搜索框内搜索vim.handleKeys,选择 Edit in settings.json 2. 设置ctrl-c,ctrl-v等快捷键置为fa…

【Java集合进阶】list常见的方法和五种遍历方式数据结构

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏…

会话控制 与 IMS基本概念

目录 1. 因特网和电信网的介绍 2. 7号信令的分层结构及其作用 3. 基本的呼叫过程(ISUP流程) 4. 多媒体通信中的会话的概念 5. 关于IMS 5.1 IMS介绍 5.2 IMS控制层中的主要网元(主要分为两类) 5.3 现在来了解呼叫会话控制功能这一类的网元 6. 总…

2024/4/1—力扣—BiNode

代码实现: /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/void convertBiNode_pro(struct TreeNode *root, struct TreeNode **p) {if (root) {convertBiNode_pro(roo…

python修改抖动图facecolor和箱型图alpha

抖动图和箱型图在数据分析和可视化中具有重要的作用,可以帮助人们更好地理解数据的特征和变化趋势。当我们想使用Python绘制抖动图的时候,可以使用seaborn的库来绘制,但其自身的参数限制了我们更改facecolor,绘制箱型图使更改透明…

什么是MQ ?为什么用MQ?

什么是MQ? MQ(message queue)(消息队列),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已,还是一种跨进程的通信机制,用于上下游传递消息…

Dubbo 服务发现

Dubbo 服务发现 1、什么是服务发现 **服务发现(Service discovery)**是自动检测一个计算机网络内的设备及其提供的服务。 2、Dubbo 与 服务发现 Dubbo 提供的是一种 Client-Based 的服务发现机制,依赖第三方注册中心组件来协调服务发现过…

C++从入门到精通——this指针

this指针 前言一、this指针的引出问题 二、this指针的特性三、例题什么时候会出现编译报错什么时候会出现运行崩溃this指针存在哪里this指针可以为空吗 四、C语言和C实现Stack的对比C语言实现C实现 前言 this指针是一个特殊的指针,在C类的成员函数中使用。它指向调…

Java笔试总结

. /etc/resolv.conf的用途是 A 邮件服务的设置文件 B DHCP的设置文件 C DNS解析的设置文件 D 网络路由的设置文件 答案: C 能够PING通同网段的节点,但却如PING不通其他网段的所有节点的最可能的原因() A 本机网关设置错误 B 本机没有正确设置DNS C 对方运行的是不…

webpack环境配置分类结合vue使用

文件目录结构 按照目录结构创建好文件 控制台执行: npm install /config/webpack.common.jsconst path require(path) const {merge} require(webpack-merge) const {CleanWebpackPlugin} require(clean-webpack-plugin) const { VueLoaderPlugin } require(vue-loader); c…

第十二届蓝桥杯大赛软件赛省赛C/C++大学B组

第十二届蓝桥杯大赛软件赛省赛C/C 大学 B 组 文章目录 第十二届蓝桥杯大赛软件赛省赛C/C 大学 B 组1、空间2、卡片3、直线4、货物摆放5、路径6、时间显示7、砝码称重8、杨辉三角形9、双向排序10、括号序列 1、空间 1MB 1024KB 1KB 1024byte 1byte8bit // cout<<"2…

nodejs详细安装步骤和npm配置

1、Node.js简介 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时。Node.js 使用高效、轻量级的事件驱动、非阻塞 I/O 模型。它的包生态系统&#xff0c;npm&#xff0c;是目前世界上最大的开源库生态系统。 2、下载Node.js 官方地址&#xff1a;https://nodejs.org/…

STM32CubeMX+MDK通过I2S接口进行音频输入输出(全双工读写一个DMA回调)

一、前言 目前有一个关于通过STM32F411CEUx的I2S总线接口控制SSS1700芯片进行音频输入输出的研究。 SSS1700 是具有片上振荡器的 3S 高度集成的USB音频控制器芯片 。 SSS1700 功能支持96 KHz 24 位采样率&#xff0c;带外部音频编解码器&#xff08;24 位/96KHz I2S 输入和输出…

RabbitMQ的交换机与队列

一、流程 首先先介绍一个简单的一个消息推送到接收的流程&#xff0c;提供一个简单的图 黄色的圈圈就是我们的消息推送服务&#xff0c;将消息推送到 中间方框里面也就是 rabbitMq的服务器&#xff0c;然后经过服务器里面的交换机、队列等各种关系&#xff08;后面会详细讲&am…

腾讯云4核8G服务器12M带宽646元1年零3个月,4C8G使用场景说明

腾讯云4核8G服务器多少钱&#xff1f;腾讯云4核8G轻量应用服务器12M带宽租用价格646元15个月&#xff0c;活动页面 txybk.com/go/txy 活动链接打开如下图所示&#xff1a; 腾讯云4核8G服务器优惠价格 这台4核8G服务器是轻量应用服务器&#xff0c;详细配置为&#xff1a;轻量4核…

【ARMv7-M】| 01——阅读笔记 | 简介|应用程序级编程和内存模型

系列文章目录 【ARMv7-M】| 01——阅读笔记 | 简介|应用程序级编程和内存模型 失败了也挺可爱&#xff0c;成功了就超帅。 文章目录 前言1、简介2、应用程序级编程模型2.1 编程模式和访问等级2.2 数据类型和运算操作2.3 寄存器和执行状态1.2.4 异常和中断1.2.5 浮点单元寄存器…

【JAVASE】带你了解面向对象三大特性之一(多态)

✅作者简介&#xff1a;大家好&#xff0c;我是橘橙黄又青&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;再无B&#xff5e;U&#xff5e;G-CSDN博客 1.多态 1.1 多态的概念 多态的概念&#xff1a;通俗来说&#…

鸿蒙学习记录

问题小测记录 总结链接&#xff1a;小测总结 学习笔记&#xff1a;鸿蒙开发学习记录 1、 main_pages.json存放页面page路径配置信息。 2、在stage模型中&#xff0c;下列配置文件属于AppScope文件夹的是&#xff1f; app.json5 3、module.json5配置文件中&#xff0c;包含…

Java集合基础知识点复习

目录 Java提供的常见集合ListArrayList底层实现与扩容机制ArrayList listnew ArrayList(10)中的list扩容几次如何实现数组和List之间的转换用Arrays.asList转List后&#xff0c;如果修改了数组内容&#xff0c;list受影响吗&#xff1f;List用toArray转数组后&#xff0c;如果修…

uniapp项目问题及解决(前后端互联)

1.路由跳转的问题 uni.navigateTo&#xff08;&#xff09; 保留当前页面&#xff0c;跳转到应用内的某个页面&#xff0c;使用uni.navigateBack可以返回到原页面 uni.redirectTo&#xff08;&#xff09; 关闭当前页面&#xff0c;跳转到应用内的某个页面。 uni.reLaunch&…