2013-02-23 22 views
0

我有一個長文本,並希望匹配所有「速率爲(\ d + \。\ d)%」的出現,但只想返回組(\ d + \。d)作爲匹配字符串的列表。我怎樣才能做到這一點?返回正則表達式中的所有組0123找到所有

我不能只匹配組,因爲它也出現在其他上下文中。

"I like how the rate is 6.7%. Now the rate is 11.4% profits were down by 5.6%" 

在這種情況下,我需要

[6.7, 11.4] 

我看,我認爲的FindAll返回匹配整個字符串,而不是組。謝謝你的澄清。

回答

1

當然可以,只是一羣你想要的部分返回:

r'the rate is (\d+\.d)%' 

等提供足夠的上下文來只匹配你想要的東西回來,並使用捕獲組。然後使用.findall()方法,該方法將只包括匹配的捕獲組:

>>> re.findall(r'the rate is (\d+\.\d)%', "I like how the rate is 6.7%. Now the rate is 11.4% profits were down by 5.6%") 
['6.7', '11.4'] 
1
In [94]: s="I like how the rate is 6.7%. Now the rate is 11.4% profits were down 
by 5.6%" 

In [95]: re.findall(r'the rate is (\d+\.\d)%', s) 
Out[95]: ['6.7', '11.4'] 
相關問題