2011-10-06 8 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> 

같은 링크가 내가 원하는 그것을 제거하는 URL을 가져도 될 수 첫 번째 유형과 호환됩니다. 그래서 펄에서 정규 표현식을 작성했습니다 :

/<a href="[^\/]*?([^<']+?)[^"]*?" class="S48">([^<>]+?)<\/a>/ 

자바 스크립트 항목과 제목 부분없이 URL 부분을 잡으려고했습니다. 하지만이 정규식은 나에게 제목 부분만을 사용하며, 취해진 URL은 단지 "/"또는 "j"입니다.

의견이 있으십니까?

+9

이 작업에는 정규식을 사용하지 마십시오. 분명 perl 용 HTML 파서가 있다면. (http://perl.active-venture.com/lib/HTML/Parser.html을보십시오) – Jens

+0

/new/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 등을 위해 regex를 사용하지 않으려면을 강력하게 제안합니다.이 작업을위한 훨씬 더 우수한 도구가 있습니다. 또한

훨씬 짧은 버전 :

/.*?(\/.*\.html).*?>([^<]+)/i 

이 동일한 결과를 생성합니다.