正则表达式分组与引用详解

2022-06-21 09:09:18

1.分组与编号

括号在正则中的功能就是用于分组, 被括号括起来的部分“子表达式”会被保存成一个子组。简单来理解就是,由多个元字符组成某个部分,应该被看成一个整体的时候,可以用括号括起来表示一个整体,这是括号的一个重要功能。其实用括号括起来还有另外一个作用,那就是“复用”。

1.1 编号如何算

从左往右,第几个左括号就是第几个分组。

1.2 不保存子组

在括号里面的会保存成子组,但有些情况下,你可能只想用括号将某些部分看成一个整体,后续不用再用它,类似这种情况,在实际使用时,是没必要保存子组的。这时我们可以在括号里面使用 ?: 不保存子组。

如果正则中出现了括号,那么我们就认为,这个子表达式在后续可能会再次被引用,所以不保存子组可以提高正则的性能。除此之外呢,这么做还有一些好处,由于子组变少了,正则性能会更好,在子组计数时也更不容易出错。

那到底啥是不保存子组呢?我们可以理解成,括号只用于归组,把某个部分当成“单个元素”,不分配编号,后面不会再进行这部分的引用。

1.3 命名分组

修改正则后,分组的编号就发生了改变,对复用造成麻烦。 一些语言提供了命名分组,命名分组的格式为(?P<分组名>正则),后续就可以使用分组名来引用

1.4 分组引用

在知道了分组引用的编号 (number)后,大部分情况下,我们就可以使用 “反斜扛 + 编号”,即 \number 的方式来进行引用,而 JavaScript 中是通过$编号来引用,如$1。
不同语言正则中的引用

  • 作者:woleto
  • 原文链接:https://blog.csdn.net/s31329/article/details/118388237
    更新时间:2022-06-21 09:09:18