qiyeboy / SpiderBook

<<python爬虫开发与项目实战>>书籍配套源码和说明

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

page100: 反向引用

shallty opened this issue · comments

关于反向引用,书中大意应该是反向引用可以引用已经命名的捕获组的匹配格式。例如,如果按照书中所说,正则表达式:((\d{3}).){3}(\d{3})的匹配效果应该和((?\d{3}).){3}\k一样。但是实际情况是:((\d{3}).){3}(\d{3})可以匹配文本:(101.191.168.168, 110.111.112.113, 101.191.168.169, 110.111.113.113, 101.191.191.168, 110.110.112.113)中的所有三维数字段,但是,((?\d{3}).){3}\k只能匹配到:101.191.168.168,110.111.113.113这样的后三位重复数字段。
原因在于:对捕获组进行命名之后,实际是将捕获组捕获到的内容分配到了命名空间所对应的内存中,再次调用捕获组仅仅会调用出捕获组命名空间内存中保存的已经捕获到的内容来进行匹配。所以,我觉得原文的表达方式有待调整。