2015-09-28 15 views
3

在字符串中,我想要所有的小數,例如23.45檢索不包含空格的小數點

但是,條件是數字應該在空格之間,而不是像length23.45523.45is the length

所以字符串length 23.455中的小數是可以接受的。

如果有像23.45.34這樣的數字,應該忽略它,即不應該顯示23.4545.34

需要一個正則表達式模式來查找Python中的所有匹配項。

例如,請考慮以下字符串:

"6.5 from1.2 .34 12.34 13.44.55 12.34.55.66 11.43 12.3 12. 12.78~ fdasfdashf 66.8987" 

我需要像下面

import re 
input_str = "6.5 from1.2 .34 12.34 13.44.55 12.34.55.66 11.43 12.3 12. 12.78~ fdasfdashf 66.8987" 
print(re.findall(<regex>, input_str)) # replace <regex> with appropriate regex. 

代碼生成的輸出應爲:

6.5, 12.34, 11.43, 12.3, 66.8987 

回答

3

您需要檢查如果該數字前面或後面沒有非空白字符,則可以使用look-ar來實現大約(?<!\S)(?!\S)。將浮點數與強制整數和小數部分匹配的正則表達式很簡單:\d+\.\d+

import re 
input_str = "6.5 from1.2 .34 12.34 13.44.55 12.34.55.66 11.43 12.3 12. 12.78~ fdasfdashf 66.8987" 
print(re.findall(r"(?<!\S)\d+\.\d+(?!\S)", input_str)) 

IDEONE demo

結果:['6.5', '12.34', '11.43', '12.3', '66.8987']

+0

@ user1939366:請讓我知道這是否爲你的作品。如果有任何不明之處,請留下評論。 –

+0

是不是檢查它不是前面或後面有一個*非*空格字符? – ShadowRanger

+0

解釋是固定的。 '?!'表示不是和'\ S'表示非空白。 –