0

如果字符串是

<li>Your browser may be missing a required plug-in contained in <a href="http://get.adobe.com/reader/">Adobe Acrobat Reader</a>.  Please reload this page after installing the missing component.<br />If this error persists, you can also save a copy of <a href="test.pdf">

我写的正则表达式是

/href=.*?.pdf/

这导致捕获第一个“href”并以“.pdf”结尾。我需要它从第二个 href 开始。换句话说,它应该只捕获以 .pdf 结尾的 href

我应该如何使用正则表达式来解决这个问题?

4

2 回答 2

2

你可以试试这个正则表达式:

/href=[^>]+\.pdf/

正则表达式101演示

大多数时候,当你可以避免.*.+(或他们的懒惰版本)时,它会更好:)

另外,不要忘记转义期。

于 2013-09-10T16:52:21.420 回答
2

您应该使用 DOM 而不是使用正则表达式来解析 HTML 或 XML。在 PHP 中有这样的DOMDocument类:

$doc = new DOMDocument();
$doc->loadHTML('<li>Your browser may be missing a required plug-in contained in <a href="http://get.adobe.com/reader/">Adobe Acrobat Reader</a>.  Please reload this page after installing the missing component.<br />If this error persists, you can also save a copy of <a href="http://www.police.vt.edu/VTPD_v2.1/crime_stats/crime_logs/data/VT_2011-01_Crime_Log.pdf">');

$links = $doc->getElementsByTagName('a');
foreach($links as $link) {
    echo $link->getAttribute('href');
}
于 2013-09-10T16:54:40.030 回答