贪婪与非
我正在Python中进行几个正则表达式替换
ws+w
在许多大文件上。 显然,如果我使正则表达式非贪婪(用?
)它不会改变它匹配的东西(如w
!= s
),但它会使代码运行得更快吗? 换句话说,使用非贪婪的正则表达式,Python是否会从匹配的第一个字符开始,而不是从文档末尾回到该字符,还是这是一个天真的视图?
这是你暗示的模式吗?
In [15]: s = 'some text with tspaces between'
In [16]: timeit re.sub(r'(w)(s+)(w)', '1 3', s)
10000 loops, best of 3: 30.5 us per loop
In [17]: timeit re.sub(r'(w)(s+?)(w)', '1 3', s)
10000 loops, best of 3: 24.9 us per loop
在这里似乎是一个非常小的差异。 只有5微秒的非贪心,
使用500字的lorem-ipsum,每个单词之间有多个混合空白,我得到8毫秒的差异。
链接地址: http://www.djcxy.com/p/76917.html上一篇: Greedy vs. non