1

因此,一段时间以来,正则表达式一直是我存在的祸根。我觉得我正处于理解它的风口浪尖,但我只是变得非常沮丧。简而言之:

我正在尝试通过 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。先感谢您!

4

1 回答 1

2

你的斜线是错误的方式。它应该是:

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

顺便说一句,您可以将其简化为:

\d(-\d)?

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

于 2013-03-19T22:16:28.060 回答