扫码一下
查看教程更方便
解析:
正则表达式(q?)b\1
中的 q?
是可选的。首先对于A选项来说。q匹配失败,但是由于q?可选,所以捕获组是成功的,但是不匹配任何内容。标记 b
匹配字符b。\1成功匹配捕获组所捕获的内容(这里是空)。因此是可以匹配字符串b的。对于B选项,正则(q?)
可以匹配p,并且捕获p。标记b
匹配字符b。\1此时是前面捕获的p,但是后面没有匹配项,因此匹配失败。但是因为正则引擎知道前面?是具有贪婪性的,所以在\1匹配失败后,正则引擎会回溯。因此此时(q?)
不再匹配q。b
和q不匹配,引擎在字符串中前进一个字符,b
和b匹配。因为由于正则的回溯,(q?)
此时捕获的为空,所以\1
可以匹配。至此,可以匹配 qb字符串中的字符b。对于C选项这个就容易理解了。最后的D选项很明显是不能匹配的。