我有几个要解析的网页,还有像
这样的链接<a href="/news/monde/0,,3204267-VU5WX0lEIDUy,00.html" class="S48">Jean-Paul II opéré "avec succès" (24/02/2005)</a>
<a href="javascript:VerifCookie('4','/news/economie/0,,3204461-VU5WX0lEIDUy,00.html',700,600,52);" class="S48">Que peut-il se passer si le pape est incapable d'assurer sa tâche ? (24/02/2005)</a>
正如你所看到的,第二个有一个领先的JavaScript东西,我想摆脱它,也兼容第一种类型。所以我在perl写了一个正则表达式:
/<a href="[^\/]*?([^<']+?)[^"]*?" class="S48">([^<>]+?)<\/a>/
捕获没有javascript内容的URL部分以及标题部分。但是这个正则表达式只为我提供了标题部分,所采用的网址只是“/”或“j”。
有什么建议吗?
答案 0 :(得分:2)
这个正则表达式:
!<a\s*href\s*=\s*".*?(/.*\.html).*"\s+class="S48">([^<>]+?)</a>!i
应用于您的输入会为组1生成以下结果:
/news/monde/0,,3204267-VU5WX0lEIDUy,00.html
/news/economie/0,,3204461-VU5WX0lEIDUy,00.html
和第2组的这些:
Jean-Paul II opéré "avec succès" (24/02/2005)
Que peut-il se passer si le pape est incapable d'assurer sa tâche ? (24/02/2005)
当然这适用于您的具体输入。我会强烈建议以避免使用正则表达式来处理.xml,.html,.xsl等。这项工作有更好的工具。
也是更短的版本:
/.*?(\/.*\.html).*?>([^<]+)/i
会产生相同的结果。