2014-05-15 2 views
-1

HTML 파일에서 모든 'a'요소의 href 속성 값 (특정 길이보다 큼)을 가져와야합니다. 나는 이런 것을 만들었다.정규식 href 최소 길이

<a.*href\s*=\s*"(?<link>.{15,})".*> 

하지만 제대로 작동하지 않습니다. 어떤 제안?

시도가 정량이 아닌 욕심 만들기 :

+1

[필수 링크] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454). 그리고 [잘 동작하고있는 것 같다] (http://regex101.com/r/eZ3jK6), 작동하지 않는 것을 디버깅하기 위해 더 많은 예제가 필요하다. – Sam

+0

유튜브의 홈페이지에서 해봤는데 이상한 문자열이 있습니다. 길이 문제로 인해 문제가 발생했다고 생각했지만 이제는 문제가 다른 것으로 알고 있습니다. – Cem

+0

큰 따옴표를 이스케이프해야 할 수도 있습니다. 유창하게 테스트 한 URL입니까? 예제 입력과 "이상한 문자열"출력을 제공해야합니다. .NET에서이 작업을 수행하고 있습니다. – statueofmike

답변

1

다음은 태그 내에 하나 개 이상의 필드를 캡처 방지하기 위해 몇 가지 방법입니다. {15,} 대신 {15,}? 이렇게하면 <a /> 태그 안에 더 많은 필드를 캡처하는 대신 두 번째 큰 따옴표에서 멈추게됩니다.

좀 더 제한적인 항목으로 한정 기호 앞의 캐치 올 .을 바꿔주는 것이 더 좋습니다. 독점적 인 문자 클래스를 사용해보십시오. 예를 들어, [^\s]{15,}은 공백이 아닌 연속 된 적어도 15 개의 문자를 찾습니다.

이 두 가지 방법 모두 지금까지 저에게 효과적 이었지만 URL이 매우 복잡하고 야생에서 변형되어있어 모든 것을 잡을 수는 없습니다. 타겟 사이트에 대해 더 많이 알면 좋습니다.

+0

마지막으로 테스트 한 것은 perl에서' "(? <= href = \") [^ \ s] {15,} (? = \ ". *>)"입니다. – statueofmike

+0

고마워요. 또한 전문 프로젝트가 아니며 단순한 다운로드 관리자 만이 아닙니다. – Cem