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.hqwc.cn/news/600473.html

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

相关文章

2024年网络安全趋势前瞻:从AI攻击到云安全新挑战

随着2024年开展新的序幕,网络安全领域正面临着前所未有的挑战与机遇,一系列引人注目的趋势和预测逐渐浮出水面。 一、AI技术发展引发的安全问题 近年来,我们见证了AI技术的飞速进步,其中ChatGPT等引领潮流的AI服务成为公众瞩目的…

SpringBoot集成Redis快速入门Demo

目录 1. Redis概述 2.下载安装 3. Spring-data-redis概述 4. 快速入门 4.1 创建工程 4.2 导入依赖 4.3 添加配置文件 4.4 添加Redis配置 4.5 添加Redis工具类 4.6 添加测试类 5. Demo下载地址 1. Redis概述 Redis(Remote Dictionary Server 远程…

接口自动化入门: Http请求的域名与IP地址概念!

在进行接口自动化测试时,经常需要与服务器进行通信,这就涉及到了使用Http协议发送请求。在发送请求时,我们需要指定目标服务器的域名或者IP地址。下面将从0到1详细介绍域名与IP地址的概念及其在接口自动化测试中的应用。 本文从5个方面来书写…

海外仓订单管理存在哪些问题?利用位像素海外仓系统能提升订单管理效率吗?

随着跨境电商业务的蓬勃发展,海外仓的订单量日益攀升,在海外仓的运作中,订单管理是一项看似简单实则复杂繁琐的任务。 然而,大批量订单的涌入,让其管理背后隐藏的问题也随机出现。让我们一起来看看有哪些问题吧&#…

webpack5如何关闭全屏错误

1、找到vue.config.js 2、在上面的devServer里面添加如下: client: {overlay: false, // 禁用全局错误提示},

echarts实现饼图见渐变

数据中添加itemStyle,修改颜色为渐变色 option {tooltip: {show:false,trigger: item},legend: {top: 5%,left: center},series: [{name: Access From,type: pie,radius: [40%, 70%],avoidLabelOverlap: false,label: {show: false,position: center,color: red},emphasis: {…

【任推邦新悟空网盘拉新】八款地推网推新项目,周期稳定,受众广!

现在地推网推新项目打得火热,尤其是夸克网盘,地推网推新流程其实很简单,简单来说就是就是给项目增加新用户,每邀请一个新用户注册,你就能得到收益,下面小推给大家整理了一份好推的项目,希望能够…

如何用Java后端处理JS.XHR请求

Touching searching engine destroies dream to utilize php in tomcat vector.The brave isn’t knocked down,turn its path to java back-end. Java Servlet Bible schematic of interaction between JS front-end and Java back-end Question 如何利用Java…

若依 ruoyi-vue 接口挂载获取Resources静态资源文件权限校验

解决小程序图片打包过大,放置后端,不引用ngnix、minio等组件,还能进行权限校验 package com.huida.web.controller.common.app;import com.huida.common.core.controller.BaseController; import com.huida.common.utils.file.FileUtils; imp…

css 实现排行榜向上滚动

使用动画实现无线向上滚动 复制一层dom&#xff0c;使用动画向上滚动&#xff0c;鼠标hover的时候暂停动画 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthd…

vue $set()使用复习总结

一维数据&#xff1a; this.$set(数组, 下标, 内容); this.$set(this.typeList, 1, 榴莲); 数组对象&#xff1a; this.$set( target要更改的数据源(可以是对象或者数组), key要更改的具体数据, value重新赋的值 ) 用法一&#xff1a; 循环外&#xff0c;单独使用 用法二 &…

2024年【低压电工】考试试卷及低压电工模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年低压电工考试试卷为正在备考低压电工操作证的学员准备的理论考试专题&#xff0c;每个月更新的低压电工模拟考试祝您顺利通过低压电工考试。 1、【单选题】Ⅱ类手持电动工具是带有()绝缘的设备。&#xff08; …