贪婪与非

我正在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

下一篇: Why is this regex not greedy?