2010-03-11 5 views
7

욕심이 많지 않은 일치를해야하며 누군가 나를 도울 수 있기를 바랍니다. 나는 다음을 가지고 있으며 JavaScript와 ASP를 사용하고있다.욕심이없는 정규 표현식, JavaScript 및 ASP

match(/\href=".*?\/pdf\/.*?\.pdf/) 

위의 일치는 href 태그의 첫 번째 시작과 일치한다. /pdf/ 폴더의 마지막 href와 일치해야합니다.

어떤 아이디어가 있습니까?

답변

6

당신은 하위 표현 캡처 괄호를 사용할 필요가 일치 :

매치 인덱스 0 전체 일치와 배열을 반환합니다

은, 모든 하위 표현 캡처는 순서대로 배열에 추가됩니다

match(/\href=".*?(\/pdf\/.*?\.pdf)/)[1]; 
그들이 일치. 이 경우 색인 1\/pdf\/.*?\.pdf과 일치하는 섹션이 포함되어 있습니다.


정규식이 너무 광범위하게 일치하는 경우 .*? 이상의 정규식을 사용하십시오. 예를 들어 :
match(/\href="([^"]+?\/pdf\/[^\.]+?\.pdf)"/)[1]; 

[^"]+?

는 게으르게 이중 따옴표가 들어 있지 않은 문자열을 일치합니다. 이 따옴표 내에 체류로 경기를 제한 할 것이다, 그래서 경기는 예를 들어, 다음과 같은 문자열에 너무 광범위하지 않습니다 :

<a href="someurl/somepage.html">Test</a><a href="dir/pdf/file.pdf">Some PDF</a> 
+0

이 나에게 /pdf/filename.pdf을 제공합니다,하지만 난 얻을 필요가 < a href = "somedirecrories/pdf/filename.pdf"그러나 html 코드에서 링크를 벗겨 내고 있고 다른 href에 대한 참조가 문서에 있습니다 - 그래서 나는 어떤 종류의 패턴 일치가 필요합니다. –

+0

@Gerald : 미안하지만, 나는 그것이 당신이 의미했던 것임을 깨닫지 못했습니다. 내 대답을 업데이트했습니다. –

+0

내가 찾고있는 완벽한 완벽한 - 감사합니다 Andy –