迹忆客 计算机编程题库

反向引用

正则表达式`([abc])+=\1`可以匹配下面哪些字符串
  • cab=cab
  • abc=c
  • cab=b
  • abc=a
正确答案是:B,C
正确率:16%

解析:

正则表达式([abc])+=\1中,捕获组内的正则为[abc],可以匹配a、b和c中的任意一个字符。假如匹配到的是a,那此时捕获组的编号为1,保存的内容就是匹配到的字符a。接下来的量词+使前面的正则重复,此时如果说匹配到了b,那么捕获组的内容变成了b。正则([abc])继续重复,如果匹配到了c,那么此时的\1引用的捕获组的内容为c。接下来([abc])不能匹配等号,那么正则表达式引擎继续下一个正则标记=,它可以和字符=匹配。当引擎到达\1时,此时的\1保存的内容是c。因此可以匹配abc=c。同理,也可以匹配 cab=b 。 对于其他的两项,就不能匹配了。 这里需要说明的是,捕获组的编号是按照小括号的个数来的(非捕获组和断言等此类不算)。而不是按照重复的次数来编号的。因此正则([abc])+ 虽然重复多次,但是只有一个捕获组。

查看笔记

扫码一下
查看教程更方便