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