迹忆客 计算机编程题库

反向引用

正则表达式`(q)?b\1`和下面哪个字符串匹配
  • b
  • qb
  • qbq
  • bq
正确答案是:C
正确率:65%

解析:

在大多数正则中,正则表达式(q)?b\1不匹配b 。(q)根本无法匹配,因此该组根本无法捕获任何东西。因为整个组都是可选的,所以引擎的确匹配b 。现在,引擎到达\1 ,它引用了完全没有参加匹配尝试的组。这将导致反向引用完全不匹配。既然没有?\1设为可选,则整体匹配尝试失败。对于字符串qb,比较容易理解,(q)匹配并捕获了q,b匹配b,此时到达\1,它的内容是捕获组匹配的q,没法匹配。所以整个匹配失败。所以只能匹配字符串qbq。

相关文章 反向引用

查看笔记

扫码一下
查看教程更方便