我的RegEx表达式中缺少什么?

时间:2013-03-19 22:13:51

标签: html regex

因此,正则表达式一直是我存在的祸根。我觉得我正处于理解它的尖端,但我只是非常沮丧。简而言之:

我正试图通过PHP从以下网站获取数据:

http://magicseaweed.com/Asbury-Park-Surf-Report/857/

我想在页面顶部提取粗体波高(此时,它显示为3-5)。我明白为什么会这样:

preg_match('/<div class="msw-fct-ccd msw-sr-details span3"> <h3> <span>(.*)    
<small>ft<\/small>   <\/span> <div class="msw-fct-ccr msw-sr-rating">/', $pageMagic,
$height);

但我不明白为什么不这样做:

preg_match('/<div class="msw-fct-ccd msw-sr-details span3"> <h3> <span>(/d-/d)|(/d)    
<small>ft<\/small>   <\/span> <div class="msw-fct-ccr msw-sr-rating">/', $pageMagic,
$height);

在我看来,从逻辑上讲,它应该是寻找一个数字,一个破折号,然后是另一个数字或只是一个数字。我在http://gskinner.com/RegExr/中测试了正则表达式,它获得了3-5。提前谢谢!

1 个答案:

答案 0 :(得分:2)

你的斜杠是错误的方法。它应该是:

(\d-\d)|(\d)

顺便提一下,您可以将其简化为:

\d(-\d)?

...但请注意,这会改变捕获组。我将修复程序作为练习留给你:)