2012-04-04 29 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位。

相关问题