2014-09-21 2 views
0

큰 html 텍스트에서 특정 html 노드를 가져오고 싶지만 정규 표현식의 일부는 좋지 않습니다. 내가하려고첫 번째 문자 일치시 중지 하시겠습니까?

<a href="ftp://mysite.com"> some stuff </a> 

:

나는 다음과 같이 모든 URL 가져 오기 할

/<a href="ftp:(.+)">/ 

을하지만 때로는 그것이 작동을하지만, 때로는 다음까지 모든 것을 사로 잡고 닫기 >.

이 정규식을 다시 쓰는 방법이 있습니까? 처음에는 >에서 멈출 수 있습니까?

/<a href="ftp:(.+?)">/ 
//  here __^ 

나 :

+1

는 '+'narure 의해 욕심. '+'다음에'?'quatifier를 추가하여 욕심이 없어야합니다. 그래서 당신의 정규 표현식은'

답변

1

+는 그것이 가능하게 할 수 및만큼 일치 의미 욕심 연산자 여전히 정규 표현식의 나머지 부분을 일치시킬 수 있습니다. 이를 위해, 부정적인 클래스를 사용하는 것을 권장합니다 : " "하나 이상의"시간을 제외한 모든 문자를 의미합니다.

/<a href="ftp:([^"]+)">/ 

Live Demo

1

은 정규식 ungreedy 확인

/<a href="ftp:([^>"]+)">/ 

을하지만 파서를 사용하는 것이 좋습니다.