2

我试图回答这个问题,其中 OP 具​​有以下字符串:

"path:bte00250 Alanine, aspartate and glutamate metabolism path:bte00330 Arginine and proline metabolism"

并想拆分它以获得以下列表:

['path:bte00250 Alanine, aspartate and glutamate metabolism', 'path:bte00330 Arginine and proline metabolism']

我试图通过在正则表达式中使用简单的前瞻断言来解决它,(?=path:). 好吧,它没有用:

>>> s = "path:bte00250 Alanine, aspartate and glutamate metabolism path:bte00330 Arginine and proline metabolism"
>>> r = re.compile('(?=path:)')
>>> r.split(s)
['path:bte00250 Alanine, aspartate and glutamate metabolism path:bte00330 Arginine and proline metabolism']

然而,在这个 answer中,回答者通过在前瞻断言前面加上一个空格来使其工作:

>>> line = 'path:bte00250 Alanine, aspartate and glutamate metabolism path:bte00330 Arginine and proline metabolism'
>>> re.split(' (?=path:)', line)
['path:bte00250 Alanine, aspartate and glutamate metabolism', 'path:bte00330 Arginine and proline metabolism']

为什么正则表达式与空格一起使用?为什么没有空格它就不起作用?

4

1 回答 1

5

Pythonre.split()有一个记录在案的限制:它不能在零长度匹配上进行拆分。因此,拆分仅适用于增加的空间。

于 2011-07-15T20:42:29.763 回答