2012-04-04 35 views
1

我有這樣一個字符串如下:這個數字提取正則表達式有什麼問題?

<br><b>224h/15.45 verbuchte Stunden</b> 

我想提取的數量和創建了以下正則表達式:

([0-9]\.?[0-9]{0,2})h\s\/\s([0-9]\.?[0-9]{0,2}) 

但前面字符串這給了我的號碼224和15而不是15.45。 這個正則表達式有什麼問題?

回答

3

因爲在點之前只允許有一個數字。

試試這個,我用點號前的{1,2}作爲量詞,把它改成你的需要。可能+將是更好的選擇,它允許一個或多個。

([0-9]\.?[0-9]{0,2})h\s\/\s([0-9]{1,2}\.?[0-9]{0,2}) 

一個更好的正則表達式可能是這個

([0-9]+(?:\.[0-9]{1,2})?)h\s*\/\s*([0-9]+(?:\.[0-9]{1,2})?) 

我在這裏做了完整的小數部分可選的,需要至少一個,並在點和最低前一個後最多2位。

相關問題