0
点赞
收藏
分享

微信扫一扫

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

一:分租的相关概念

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

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

  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+","$1");
                  System.out.println(result);

              }

案例2:

截图如下:

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

运行结果如图:

                     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));

        }




举报

相关推荐

0 条评论