我有一根这样的绳子:
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+)
后跟一个空格。。