我有一根这样的绳子:

STRING 1 160 Some descriptor information. /Uselessstuff.; STRING 161 274 Some other descriptor information. /Moreuselessstuff.; STRING 275 1070 Last descriptor info. /Lastuselesspart.

现在,我想提取两个整数和句点后面的信息,然后忽略所有内容,直到字符串结束或分号结束。所以我希望最后:
[('1', '160', 'Some descriptor information'), ('161', '274', 'Some other descriptor information'), ('275', '1070', 'Last descriptor info')]

我试过:
import re
s = "STRING 1 160 Some descriptor information. /Uselessstuff.; STRING 161 274 Some other descriptor information. /Moreuselessstuff.; STRING 275 1070 Last descriptor info. /Lastuselesspart."
re.findall(r'(\d+)\s(\d+)\s(\w+)', s)

但是,这只提供了以下信息:
[('1', '160', 'Some'), ('161', '274', 'Some'), ('275', '1070', 'Last')]

我怎样才能得到这段时间的其他信息?

最佳答案


(\d+)\s(\d+)\s([^\.]*)

DEMO
你的python代码是,
>>> s = "STRING 1 160 Some descriptor information. /Uselessstuff.; STRING 161 274 Some other descriptor information. /Moreuselessstuff.; STRING 275 1070 Last descriptor info. /Lastuselesspart."
>>> m = re.findall(r'(\d+)\s(\d+)\s([^\.]*)', s)
>>> m
[('1', '160', 'Some descriptor information'), ('161', '274', 'Some other descriptor information'), ('275', '1070', 'Last descriptor info')]

Explanation:

(\d+)上面捕获的数字后面会跟一个空格。
\s再次将一个或多个数字捕获到第二组中。
(\d+)后跟一个空格。

07-25 21:51