如何找到任何大字符串中的最后一个数字?
例如,在以下字符串中,我想要 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 之间的任何数字。
如何找到任何大字符串中的最后一个数字?
例如,在以下字符串中,我想要 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 之间的任何数字。
>>> 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]
我想我对查找一堆结果并选择最后一个结果的实现细节/性能了解不够,而不是只找到最后一个开始(没有进行任何性能比较);但是,这可能会更快:
>>> 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'