2.3 문자열 에서 하위 문자열 모드 찾기

2.3  문자열 에서 하위 문자열 모드 를 찾 습 니 다.이 장 앞 에 있 는'정규 표현 식 으로 텍스트 를 검색 합 니 다'절 은 regex 모드 를 사용 하여 문자열 이 일치 하 는 지(또는 부분 이 일치 하 는 지)주어진 모드 를 비교 하 는 방법 을 설명 합 니 다.문자열 을 입력 한 첫 번 째 문자 부터 일치 합 니 다.이 절 에 서 는 regex 모드 를 사용 하여 하나의 String 에서 여러 개의 일치 하 는 값 을 찾 습 니 다.예 를 들 어 본문 에 포 함 된 모든 URL 을 문서 에서 검색 할 수 있 습 니 다.우선 URL 과 일치 하 는 패턴 문자열 을 만들어 야 합 니 다.다음은 대부분의 URL 과 일치 하 는 모드 를 보 여 줍 니 다.
String urlString = "(http|https|ftp)://[///w//.//-//+//?%=&;:,#]+";

이 모드 는 잘못된 문법 을 포함 하 는 URL 문자열 과 일치 하기 때문에 URL 을 효과적으로 설명 할 수 없습니다.http://////////。본문 에 포 함 된 URL 뒤에 붙 어 있 는 쉼표 나 분 호 를 따라 잡 을 수 있 는 경우 도 있 습 니 다.이 문자 들 은 때때로 URL 에 나타 나 지만,URL 이 본문 에 나타 나 면 URL 의 일부분 을 원 하지 않 아 포 획 될 수 있 습 니 다.그러나 이 모드 는 상대 적 으로 짧 고 텍스트 파일 에 포 함 된 URL 을 검색 하 는 데 잘 사용 된다.이 모드 표현 식 의 각 부분 은 다음 과 같 습 니 다.
●  http、https ftp 
●  ://
● / 0-9 A-Z a-z _ . - + ? % = & ; : , #

Matcher 는 특수 한 입력 문자열 에 모드 를 적용 할 수 있다 는 것 을 알 고 있 습 니 다.앞에서 정 의 된 url String 모드 를 사용 하여 여러 개의 하위 문자열 이 일치 하 는 지 찾기 위해 서 는 Matcher 의 find 방법 을 사용 해 야 합 니 다.입력 문자열 에서 나타 나 는 모든 패턴 을 찾기 위해 find 방법 을 반복 해서 다음 일치 하 는 것 을 찾 을 수 있 습 니 다.더 이상 일치 하지 않 을 때 find 방법 은 false 로 돌아 갑 니 다.현재 일치 하 는 위 치 를 얻 기 위해 서 는 start 와 end 방법 을 사용 하여 입력 텍스트 의 범위 내 에서 색인 값 을 얻 을 수 있 습 니 다.다음 코드 는 데이터 에서 찾 은 모든 URL 을 표시 합 니 다.
String urlString = "(http|https|ftp)://[///w//.//-//+//?%=&;:,#]+";
Pattern urlPattern = Pattern.compile(urlString);
// get the data (somehow)
String data = getStringData();
// get a matcher for the data
Matcher urlMatcher = urlPattern.matcher(data);
// iterate through the matches
while (urlMatcher.find()) {
int startIndex = urlMatcher.start();   // index of start
int endIndex = urlMatcher.end();        // index of end + 1
// retrieve the matching substring
String currentMatch = data.substring(startIndex, endIndex);
System.out.println(currentMatch);
}

이 코드 는 상대 적 인 URL(예 를 들 어/images/picture.jpg)과 일치 하지 않 습 니 다.이 URL 들 은 HTML 파일 이나 사전 http:/의 불완전한 URL(예 를 들 어 wicked cooljava.com)에 자주 나타 납 니 다.어떤 문자열 을 상대 URL 로 대해 야 할 지 알 기 위해 서 는 HTML 파일 의 구 조 를 이해 해 야 합 니 다.(regex 를 사용 해도 이 작업 을 수행 할 수 있 지만 더 어렵 습 니 다.)일치 하 는 문맥 을 알 아야 합 니 다.이 를 위해 서 는 문법 을 이해 하 는 토대 에서 파일 을 분석 해 야 합 니 다.더 많은 정 보 를 알 고 싶다 면 제3 장 을 참고 하 세 요.

좋은 웹페이지 즐겨찾기