웹 페이지에서 모든 HTTP URL을 검색하는 간단한 유틸리티를 만들고 있습니다.
처음에는 HTML 구문 분석 라이브러리를 사용하여 HREF 태그를 구문 분석 할 계획 이었지만 스크립트 내에 포함 된 URL도 검색해야한다는 것을 알게되었습니다 (아래 예제 스크립트). 따라서 모든 HTTP를 얻기 위해 정규식을 시도하기 시작했습니다. 웹 페이지의 URL이지만 어떤 이유로 내 정규식이 제대로 작동하지 않습니다.
URL은 자바 스크립트 내부에있을 수 있습니다.
<script>
if(jQuery.browser.msie)
{
var v= 'http://test.com/test/test';
}
</script>
내 프로그램 :
try {
BufferedReader in=new BufferedReader(new FileReader("c:\\sample\\sample.html"));
while ((inputLine = in.readLine()) != null) {
System.out.println(inputLine);
String pattern = "http?://([-\\w\\.]+)+(:\\d+)?(/([\\w/_\\.]*(\\?\\S+)?)?)?";
// Create a Pattern object
Pattern r = Pattern.compile(pattern);
// Now create matcher object.
Matcher m = r.matcher(inputLine.replaceAll("http://", "\nhttp://"));
while (!m.hitEnd()) {
if (m.find()) {
System.out.println("Found value: " + m.group(0));
} else {
//System.out.println("NO MATCH");
}
}
}
in.close();
} catch (Exception e) {
e.printStackTrace();
}
누군가가이 문제를 해결하도록 도와 주거나 웹 페이지에서 모든 URL을 검색하는 가장 좋은 방법을 알려줄 수 있습니까?
표현에 오타가 있습니다. s
선택 사항 이어야합니다 .
https?://([-\\w\\.]+)+(:\\d+)?(/([\\w/_\\.]*(\\?\\S+)?)?)?
^
또한 다음을 권장합니다.
(
... )
캡처 그룹을 (?:
... 와 같은 비 캡처 그룹으로 대체)
.
캐릭터 그룹 내부 에서 탈출 할 필요가 없습니다.[.]
/folder/subfolder
초기 슬래시와 폴더 이름을 찾는 반복적 인 비 캡처 그룹으로 섹션을 찾는 섹션을 다시 작성하십시오.정규식 : https?:\/\/(?:[\w-]+.)+(?::\d+)?(?:\/[\w\/_.]*)*?(?:\?\S+)?(?=['"\s])
Java 문자열로 : "https?:\\/\\/(?:[\\w-]+.)+(?::\\d+)?(?:\\/[\\w\\/_.]*)*?(?:\\?\\S+)?(?=['\"\\s])"
샘플 텍스트
<script>
if(jQuery.browser.msie)
{
var v= 'http://test.com/test/test';
}
</script>
<a class="test" href="http://blablablablabla.com">Third Link</a>
성냥
[0] => http://test.com/test/test
[1] => http://blablablablabla.com
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다