因此,正则表达式一直是我存在的祸根。我觉得我正处于理解它的尖端,但我只是非常沮丧。简而言之:
我正试图通过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。提前谢谢!
答案 0 :(得分:2)
你的斜杠是错误的方法。它应该是:
(\d-\d)|(\d)
顺便提一下,您可以将其简化为:
\d(-\d)?
...但请注意,这会改变捕获组。我将修复程序作为练习留给你:)