我有一個python函數,它使用正則表達式匹配給定字符串中的一個(第一個)浮點數並返回該數字。修改python正則表達式來匹配所有浮點數而不是隻匹配第一個
我該如何修改它(正則表達式)來泛化函數,以便返回一個帶有字符串中所有數字的列表?
這裏是一個工作示範:
import re
def extract_number(s,notfound='NOT_FOUND'):
regex='[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?' # matching any floating point number
m = re.search(regex,s)
if(m): val=m.group()
else: val=notfound
return val
example='bla1.23bar4.5fuzz6.7cat8'
print example
print extract_number(example)
在這個例子中,輸出是:
bla1.23bar4.5fuzz6.7cat8
1.23
,我正在尋找改進的功能,讓我們把它extract_numbers (注意複數!),應該輸出:
bla1.23bar4.5fuzz6.7cat8
[1.23, 4.5, 6.7, 8]
只需使用're.findall' – wim 2012-02-22 10:00:54