当前位置: 首页 > 图灵资讯 > 技术篇> Java正则表达式5之分组及其举例

Java正则表达式5之分组及其举例

来源:图灵教育
时间:2023-07-09 16:57:26

一、分租的相关概念

分组本质上是用括号将正则表达式分开,前一组不会干扰下一组的正则表达。

正则表达式中的分组类别:

  1. 捕获分组:继续使用本组的数据。
  2. 非捕获分组:分组后不需要使用本组的数据,只需包括数据。

本文介绍了非捕获分组的内容:

符号

含义

举例

(?:正则)

获取所有

python(?:a|b|c)

(=正则)

获取前面的内容

python(=a|b|c)

(!正则)

获取不是指定内容的前面

python(a|b|c)

默认情况下,Java是捕获分组(每组内容可以重复使用)。

组号的特点:

  • 从1开始,连续不间断。
  • 以左括号为基准,最左边是第一组

二:例子分析

案例1:

截图如下:

                     Java正则表达式5之分组及其举例_System

印刷结果如下:

                     Java正则表达式5之分组及其举例_System_02

正则表达式中各部分内容的分析:

  1. (.): 表示将字符串中重复内容的第一个字符视为一组
  2. \\1:这意味着第一个字符再次出现
  3. +:至少表示一次或多次
  4. $: 表示在正则表达式中取出第一组内容。

案例1代码如下:

 /*  需求:                  字符串:我想学编程编程程程序。                  替换:我想学编程           */                  String str = “我要学编程程程程程编程”;                  //需求: 重复内容 替换为 单个的                  //学学       学                  ///编编编编    编                  ///程程程程程程 程                  //(.)       表示重复内容的第一个字符被视为一组                  //\\1       这意味着第一个字符再次出现                  //+         至少一次                  //$1        表示正则表达式中第一组的内容,再拿出来用                  String result = str.replaceAll("(.)\\1+,;                  System.out.println(result);              }

案例2:

截图如下:

                     Java正则表达式5的分组及其例子_正则_03 style="visibility: visible; width: 570px;"></p><p><span style=运行结果如图所示:

                     Java正则表达式5之分组及其举例_正则表达式_04

所有代码如下:

  /*                 非捕获分组:分组后无需使用本组数据,只是把数据包括起来                 身份证号:                            61191080935228457x                            710801197639022302                            75040119812705387x                            930133197264039024                            430102197607046442                            04278906767843563x                                    */                  ///先定义身份证的正则表达式                  String regex = "[1-9]\\d{16}(?:\d|X|x)";                  System.out.println("61191080935228457x".matches(regex));                  System.out.println("710801197639022302".matches(regex));                  System.out.println("75040119812705387x".matches(regex));                  System.out.println("930133197264039024".matches(regex));                  System.out.println("430102197607046442".matches(regex));                  System.out.println("04278906767843563x".matches(regex));        }