我有这样一个字符串如下:这个数字提取正则表达式有什么问题?
<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。 这个正则表达式有什么问题?
我有这样一个字符串如下:这个数字提取正则表达式有什么问题?
<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。 这个正则表达式有什么问题?
因为在点之前只允许有一个数字。
试试这个,我用点号前的{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位。
如果您正则表达式引擎支持的字符类可能是一点点紧凑这样的:
(\d{1,2}\.?\d{0,2})h\s/\s(\d{1,2}\.?\d{0,2})
\d
是[0-9]