rel = "nofollow"이 아닌 텍스트에서 링크를 추출하는 정규식을 작성하려고합니다.지정한 속성으로 링크를 추출하기위한 정규식
예 :
aiusdiua asudauih <a rel="nofollow" hre="http://uashiuadha.asudh/adas>adsaag</a> uhwaida <br> asdgydug <a href="http://asdha.sda/uduih/dufhuis>aguuia</a>
감사합니다!
rel = "nofollow"이 아닌 텍스트에서 링크를 추출하는 정규식을 작성하려고합니다.지정한 속성으로 링크를 추출하기위한 정규식
예 :
aiusdiua asudauih <a rel="nofollow" hre="http://uashiuadha.asudh/adas>adsaag</a> uhwaida <br> asdgydug <a href="http://asdha.sda/uduih/dufhuis>aguuia</a>
감사합니다!
다음 정규식 일을 할 것입니다 :
<a (?![^>]*?rel="nofollow")[^>]*?href="(.*?)"
원하는 URL이 캡처 그룹 # 1에 있습니다. 예 : 루비에는 다음과 같습니다
if input =~ /<a (?![^>]*?rel="nofollow")[^>]*?href="(.*?)"/
match = $~[1]
end
을가 부정적 예측, href
또는 rel
전에 올 수 있습니다 무엇에 rel
이전 [^>]*?
을 받아들입니다. href
이 rel
이후에 오면 물론 괜찮습니다.
정규식 사용 경험. *.을 사용하면서 항상주의해야합니다. – CodeWrite
@regexhacks :'. *? '를 사용할 때 왜주의해야합니까? –
@regexhacks 동의합니다. 아무것도 허용하지 않거나 무제한 인 모든 한정 기호에주의해야합니다. –
시도 <(?:A|AREA)\b[^<>]*?(?!rel="nofollow")[^<>]*?href=['"]([^>"]*)[^>]*?>
는 .NET 정규식을 사용하는 경우 다음
<(?:A|AREA)\b[^<>]*?(?!rel="nofollow")[^<>]*?href=['"](?<URL>[^>"]*)[^>]*?>
데이터가 URL라는 이름의 그룹에있다이 또는 그룹 1
이 답변에 대한 두 가지 문제를 수정해야한다고 생각합니다 : 1) 지금은 실제로 'rel = "nofollow"'가있는 문자열을 찾을 수 있지만 그 질문은 반대 . 2)'a' 태그에서'href'가'rel'보다 먼저 나오면 일치하지 않습니다. –
예! 그것해야합니다. 내 것보다 너의 것! :-) 나는 편집하지 않을 것이다. 지원 대답. – CodeWrite
... 정규식 대신 파서를 사용할 수있는 가능성이 있습니까? – jensgram
아니오 정규식으로 만들기를 원합니다 –