2013-07-16 3 views
0

저는 음악 다운로드 응용 프로그램에서 작업 중이며 웹 사이트의 전체 웹 페이지를 읽고 결과를 표시해야합니다. 그래서 전체 웹의 소스 코드를 읽었습니다. 이제 노래 이름과 그 URL은 HTML 페이지에 다음과 같이 할 수있다 :일치하는 패턴에 문제가 있음

HTML 코드 :

<div id="right_song"> 
    <div style="font-size:15px;"><b>Name of song</b></div> 
    <div style="clear:both;"></div> 
    <div style="float:left;"> 
    <div style="float:left; height:27px; font-size:13px; padding-top:2px;"> 
    <div style="float:left;"><a href="link of song" rel="nofollow" target="_blank" style="color:green;">Download</a> 

그래서 내가 이름과 URL을 얻을 수를 일치 다음이의 패턴을 사용하고 생각했다.

나는 다음과 같이 패턴 제작 :

<div id=\"right_song\"> 
<div style=\"font-size:15px;\"><b>([^<]*)</b></div> 
<div style=\"clear:both;\"></div> 
<div style=\"float:left;\"> 
<div style=\"float:left; height:27px; font-size:13px; padding-top:2px;\"> 
<div style=\"float:left;\"><a href=\"([^\"]*)\" rel=\"nofollow\" target=\"_blank\" style=\"color:green;\">Download</a> 

를하지만 항상 내가 잘못 가고 그래서 찾을 수 없습니다 패턴으로 돌아갑니다.

완벽하게 안내해주세요.

+0

I 미묘한 CSS 세부 사항을 변경할 수 있습니다 패턴을 grep'ing의 짧은/안전한 방법 그러한 많은 양의 데이터에서 정규 표현식을 사용하려고하지는 않을 것입니다. 정규식이 아닌 HTML 파서를 사용하십시오. 스크루 드라이버를 사용해야 할 때 면도날을 사용하는 것과 같이 잘못된 도구를 사용하고 있습니다. –

+0

@Jonathon Reinhart 전 웹 페이지를 읽고 노래를 얻기 위해 패턴을 찾으려고합니다. 응용 프로그램에 대한 다른 레이아웃을 원하면 html 파서가 응용 프로그램에 대한 다른보기를 제공합니까? –

답변

0

순전히 예제를 기반으로합니다. ... 종료 라인 문제처럼 보인다 + SO 4 개 공간 지수의

/<div id=\"right_song\">[\r\n\t\ ]+<div style=\"font-size:15px;\"><b>([^<]*)</b></div>[\r\n\t\ ]+<div style=\"clear:both;\"></div>[\r\n\t\ ]+<div style=\"float:left;\">[\r\n\t\ ]+<div style=\"float:left; height:27px; font-size:13px; padding-top:2px;\">[\r\n\t\ ]+<div style=\"float:left;\"><a href=\"([^\"]*)\" rel=\"nofollow\" target=\"_blank\" style=\"color:green;\">Download</a>/ 

그러나 거기에 제 3 자가

/<div[^>]+>[\r\n\t\ ]+<div[^>]+><b>([^<]*)</b></div>[\r\n\t\ ]+<div[^>]+></div>[\r\n\t\ ]+<div[^>]+>[\r\n\t\ ]+<div[^>]+>[\r\n\t\ ]+<div[^>]+><a href=\"([^\"]*)\"[^>]+>Download</a>/