擅长:python、mysql、java
<p>极有可能<a href="http://docs.python.org/library/re.html#re.finditer" rel="noreferrer">^{<cd1>}</a>使用的内存开销相当小。</p>
<pre><code>def split_iter(string):
return (x.group(0) for x in re.finditer(r"[A-Za-z']+", string))
</code></pre>
<p>演示:</p>
<pre><code>>>> list( split_iter("A programmer's RegEx test.") )
['A', "programmer's", 'RegEx', 'test']
</code></pre>
<p><strong>编辑:</strong>我刚刚确认,假设我的测试方法是正确的,在Python3.2.1中这需要恒定内存。我创建了一个非常大的字符串(1GB左右),然后用一个<code>for</code>循环遍历iterable(不是列表理解,它会生成额外的内存)。这并没有导致明显的内存增长(也就是说,如果内存有增长,它远远小于1GB字符串)。</p>