迹忆客 计算机编程题库

子组和捕获

关于正则表达式`(\w)\1`和`(\w)(\w)`的区别说法正确的是
  • 二者都可以匹配 aa,所以二者是相同的
  • 前者只能匹配两个相同的字符,而后者可以匹配任意两个字符的组合
  • 前者有一个捕获组,后者有两个捕获组
  • 因为\1是对(\w)的引用,所以 (\w)\1和(\w)(\w) 相同
正确答案是:B,C
正确率:76%

解析:

其实这里考查的还是对于捕获组的反向引用的知识点,反向引用是对捕获组中匹配到的内容的引用,而不是对捕获组的引用。因此 (\w)\1(\w)(\w)匹配的内容是有交集的,但是(\w)\1只能匹配两个连续的相同的字符,例如:aa。但是它不能匹配ab 此类的字符串。而(\w)(\w)不但可以匹配aa还可以匹配ab。

查看笔记

扫码一下
查看教程更方便