12

如何找到任何大字符串中的最后一个数字?

例如,在以下字符串中,我想要 47 作为输出:

'tr bgcolor="aa77bb"td>font face="verdana"color="white" size="2">b>Total/b>/font>/td>\td>font face="verdana"color="white" size="2">b>47/b>/font>/td>/tr>'

PS:我们不知道号码。数字 47 只是一个例子。它可以是 0 到 900 之间的任何数字。

4

2 回答 2

21
>>> import re
>>> text = 'tr bgcolor="aa77bb"td>font face="verdana"color="white" size="2">b>Total/b>/font>/td>\td>font face="verdana"color="white" size="2">b>47/b>/font>/td>/tr>'
>>> re.findall(r'\d+', text)[-1]
'47'

如果你需要匹配浮点数,总会有这个

对于很长的字符串,这更有效:

re.search(r'\d+', text[::-1]).group()[::-1]
于 2013-06-09T07:05:17.977 回答
1

我想我对查找一堆结果并选择最后一个结果的实现细节/性能了解不够,而不是只找到最后一个开始(没有进行任何性能比较);但是,这可能会更快:

>>> text = 'tr bgcolor="aa77bb"td>font face="verdana"color="white" size="2">b>Total/b>/font>/td>\td>font face="verdana"color="white" size="2">b>47/b>/font>/td>/tr>'
>>> import re
>>> re.search(r'(\d+)\D+$', text).group(1)
'47'
于 2013-06-09T07:46:49.603 回答