迹忆客 计算机编程题库

子组和捕获

对于正则表达式`((ab))cd`,匹配到字符串ab之后,要对ab进行引用,需要下面哪一个选项
  • \0
  • \1
  • \2
  • \3
正确答案是:C
正确率:69%

解析:

要找出特定反向引用的编号,请从左到右检测正则表达式。计算所有编号的捕获组的开头括号。第一个括号以反向引用号1开始,第二个是引用号2,以此类推。这里要忽略小括号的其他的语法功能(例如非捕获组),正则中的这些小括号是不计入编号的。这意味着非捕获括号还有另一个好处:我们可以将它们插入正则表达式中,而无需更改分配给反向引用的数字。这在修改复杂的正则表达式时非常有用。这里需要注意的是嵌套的优先级要高于并列的。就相当于深度遍历。如果一个子组1嵌套的有子组2,并且在子组1的右边并列又个子组3,则子组2的下标要先于子组3。因为(ab)外面还有一层小括号,所以(ab)的捕获编号为2。

查看笔记

扫码一下
查看教程更方便