如何匹配正则表达式中的第一场比赛?

时间:2014-11-30 22:10:18

标签: php regex web-crawler

正如你所知,当你编写一个正则表达式代码并且你希望它直到php中的页面源中的某些东西(匹配)时,它会匹配该页面中的最后一个或匹配,这里是问题我需要将它匹配到第一个字符并避免它去最后一个甚至第二个字符,这里是我的正则表达式代码

#<a href="/lyrics/[\s\S]{1,}/[\s\S]{1,}.html#

我需要它来匹配页面中的第一个.html,只是在a标签的href中, 但它匹配页面中的最后一个.html并将其放入我的数组的0部分 tnx用于帮助;)

1 个答案:

答案 0 :(得分:1)

  

我需要它与 .html 标记中 href 页面中的第一个a匹配。 ..

除非我误解了某些内容,您是否考虑过使用DOM代替正则表达式?

$doc = DOMDocument::loadHTML('
    <a href="/lyrics/foo/foo.html">...</a>
    <a href="/lyrics/bar/bar.html">...</a>
    <a href="/lyrics/foobar/foobar.html">...</a>
    <a href="/lyrics/foobaz/foobaz.html">...</a>
    <a href="/lyrics/baz/baz.html">...</a>
');

$tag = $doc->getElementsByTagName('a')->item(0);
echo $tag->getAttribute('href'); //=> "/lyrics/foo/foo.html"