2011-10-06 107 views
0

我有幾個網頁進行解析,並有像正則表達式採取網址

<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部分。但是這個正則表達式只爲我提供了標題部分,所採用的URL只是「/」或「j」。

有什麼建議嗎?

+9

你不應該使用正則表達式來完成這個任務。當然,如果Perl的HTML解析器。 (請看http://perl.active-venture.com/lib/HTML/Parser.html) – Jens

+0

你想抓住/news/monde/0,,3204267-VU5WX0lEIDUy,00.html和/ news/economie/0,,3204461-VU5WX0lEIDUy,00.html? – FailedDev

+0

@FailedDev是的,我想要的url部分 – darkjh

回答

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 

會產生相同的結果。