正则表达式之分组(捕获)、后向引用

       分组 

        正则表达式中的分组又称为子表达式,就是把一个正则表达式的全部或部分当做一个整体进行

  处理,分成一个或多个组。其中分组是使用“()”表示的。进行分组之后“()”里面的内容就会被当

  成一个整体来处理。

         先看看一个具体的例子吧:

           

           同时我们可以使用“()”限制替换的范围

         

         分组可以分为捕获组和非捕获组.

          捕获组

                     可以通过从左到右通过其括号对其进行编号:

                   

              需要注意的是组零永远代表的是整个正则式,通过这样命名保存了匹配分组的匹配的序列,

        捕获的子序列就可以通过后向引用在表达式中使用了,也可以从匹配器中检索。

             至于后向引用其实就是对匹配组的一种快捷指令,用法后面会介绍.

             非捕获组

                   以 (?) 开头的组是纯的非捕获 组,它不捕获文本 ,也不针对组合计进行计数。就是说,

                  如果小括号中以?号开头,那么这个分组就不会捕获文本,当然也不会有组的编号,因此

                  也不存在Back 引用。

                   

           

                   测试匹配性   (?<!4)56(?=9) 这里的含义就是匹配后面的文本56前面不能是4,后面必须

                         是9组成。因此,可以匹配如下文本 5569  ,与4569不匹配。

              

       后向引用

             当一个正则表达式被分组后,每个组将会自动的分配一个组号用于代表该组的表达式,

          其中,组号的编制规则为:从左到右、以分组的左括号“(”为标志,第一个分组的组号为1

          第二个分组的组号为2,以此类推。

               反向引用提供查找重复字符组的方便的方法。它们可被认为是再次匹配同一个字符串的快捷指令。

          如何理解呢?先看看一个例子吧。

             1、匹配“javajava”

                    仅仅使用分组实现:(java)(java)

                    使用后向引用的方法:(java)\1

                   

         貌似上面也没看出啥区别呀,在来一个例子

            2、直接对比(\w)\1和(\w)(\w)的区别

         

                  该正则匹配的是出现两次的字符.\1将重复匹配(\w)出现的内容!

          

               该正则只是简单的匹配两个字符,注意区别!

           再给个例子:

          

     

   

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
正则表达式语法中的分组是指将多个字符或子表达式合在一起,并对其进行操作。分组可以使用圆括号来表示,例如`(abc)`表示将字符序列"abc"作为一个整体进行匹配。分组可以用于多种操作,包括重复、替换和捕获等。在分组中可以使用垂直线`|`表示或操作,例如`(abc|def)`表示匹配"abc"或"def"。分组还可以使用反向引用,即在正则表达式引用之前的分组,例如`(abc)\1`表示匹配"abcabc"。分组还可以使用问号加冒号的形式来进行捕获分组,例如`(?:abc)`表示匹配"abc"但不进行捕获。总之,分组正则表达式语法中常重要的一部分,可以帮助我们更灵活地进行匹配和操作。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [正则表达式 语法 分组](https://blog.csdn.net/shuyv/article/details/104566039)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [零基础自学Golang 第16章 正则表达式 16.1 正则表达式介绍 & 16.2 正则表达式语法](https://blog.csdn.net/weixin_44226181/article/details/128408399)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值