正则表达式匹配href而没有传递结束标记

时间:2010-11-01 19:55:16

标签: regex

我正在尝试创建一个正则表达式来解析html页面中的文档链接(pdf,ppt,xls,doc)。我有正则表达式非贪婪但我看到的问题如下:

  • 在href到同一行的文档之前,会出现HTML页面的href。

在这种情况下,正则表达式从HTML页面的href的开头到同一行中以下href的文档文件扩展名的末尾匹配。

这是我正在使用的正则表达式:

/href="\/cms\/(.*?\.(pdf|ppt|xls|doc))(\?.*?)?"/i

以下是一些要解析的示例HTML:

<a href="/cms/medical/plans_overview.html">Medical</a></div><a href="/cms/docs/mydoc.pdf"> 

目前,此匹配从第一个href到最后一个pdf。似乎我需要能够指定我想要匹配,只要它不通过结束“&gt;”在表达中但未能弄清楚这一点。

非常感谢任何帮助...

1 个答案:

答案 0 :(得分:1)

由于您的属性值包含在双引号中,因此您可以将它们排除在匹配之外:

/href="\/cms\/([^"]*?\.(pdf|ppt|xls|doc))(\?[^"]*?)?"/i

您可以使用[^<"]缩小有效字符。