正则表达式·记③
括号在正则中的功能就是用于分组。简单来理解就是,由多个元字符组成某个部分,应该被看成一个整体的时候,可以用括号括起来表示一个整体
分组与编号
括号在正则中可以用于分组,被括号括起来的部分“子表达式”会被保存成一个子组,简单来说,第几个括号就是第几个分组
比如,想要取一个2022-03-15 22:46:00,则可以写成
(\d{4}-\d{2}-\d{2}) (\d{4}:\d{2}:\d{2})
这就有了两个分组,其中,第一个括号的分组编号就是1,第二个括号的分组编号就是2
不保存子组
如果正则中出现了括号,那么我们就觉得,这个子表达式在后续可能会再次被引用,那么,只想用括号将某些部分看成一个整体,后续不用再用它的话,应该怎么办呢?这时我们可以在括号里面使用 ?: 不保存子组
简单来说,不保存分组就是只执行分组的操作,把这一部分作为一个整体的元素,而不进行编号,后面就不会再使用这部分的引用,可以提高正则表达式的性能
括号嵌套
在括号嵌套的情况里,我们要看某个括号里面的内容是第几个分组怎么办?
简单来说,我们只需要数左括号(开括号)是第几个,就可以确定是第几个子组,也就是从左往右数,当前左括号是第几个左括号,就是第几组
命名分组
命名分组的格式为(?P<分组名>正则)
可以使用名称,不用编号,实际上命名分组的编号已经分配好了
分组引用
绝大多数的语言,我们就可以使用 “反斜扛 + 编号”,即 \number 的方式来进行引用,而 JavaScript 中替换是通过$编号来引用,查找是\,需要的时候查文档