我正在尝试创建一个正则表达式来解析html页面中的文档链接(pdf,ppt,xls,doc)。我有正则表达式非贪婪但我看到的问题如下:
在这种情况下,正则表达式从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;”在表达中但未能弄清楚这一点。
非常感谢任何帮助...
答案 0 :(得分:1)
由于您的属性值包含在双引号中,因此您可以将它们排除在匹配之外:
/href="\/cms\/([^"]*?\.(pdf|ppt|xls|doc))(\?[^"]*?)?"/i
您可以使用[^<"]
缩小有效字符。