我想创建一个正则表达式来解析HTML页面中的文档链接(pdf,ppt,xls,doc)。我有正则表达式非贪婪,但我看到的问题如下:正则表达式匹配href而不通过结束标记
- 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格式相匹配。似乎我需要能够指定我想要的匹配,只要它没有通过表达式中的关闭“>”,但一直没能弄清楚。
希望得到任何帮助......
出于好奇,你为什么选择正则表达式来执行这个任务? – 2010-11-01 19:59:15
它似乎是动态解析大量页面的最佳方法,而无需编写和维护大量的字符串解析逻辑。当然,正则表达式的问题在于如果你没有很多经验,你可以花几个小时看看如何让正则表达式工作 – 2010-11-02 00:02:06
你可能想用XPath查询来代替RegEx;技术上的html标记不是_regular_语言,所以如果使用_regular_表达式来处理html或xml,它不会像预期的那样工作。 – 2010-11-03 03:38:33