栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

带有反向引用的不可能的回溯

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

带有反向引用的不可能的回溯

这看起来确实像是Python

re
模块中的一个限制(我从Microsoft的支持电话中学到的一种“错误”的好说法)。

我猜想这与以下事实有关:Python不支持可变长度的后向断言,但是它不够聪明,无法确定

1
始终是固定长度的。我不能说为什么在编译正则表达式时不抱怨这一点。

很有趣:

>>> print (re.sub(r'.(?<!)', r'(g<0>)', test))(x)(A)(A)(A)(A)(A)(y)(B)(B)(B)(B)(z)>>>>>> re.compile(r'(.*)(?<!1)') # This should trigger an error but doesn't!<_sre.SRE_Pattern object at 0x00000000026A89C0>

因此最好不要在Python的后置断言中使用反向引用。正向后看并不会好得多(它在这里也像正向前向相匹配):

>>> print (re.sub(r'(.)(?<=1)', r'(g<0>)', test))x(A)(A)(A)(A)Ay(B)(B)(B)Bz

而且我什至无法猜测这里发生了什么:

>>> print (re.sub(r'(.+)(?<=1)', r'(g<0>)', test))x(AA)(A)(A)Ay(BB)(B)Bz


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/516300.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号