TIL

[java] Pattern, Matcher

하얀잔디 2022. 12. 20. 16:30

정규표현식에 관한 클래스이다.

이 함수들을 이용해 이미지 uri가 요청되었을때, 썸네일을 파일명을 만들어보자.

 

아래는 잘 사용되는 함수들이다.

 

Pattern
static Pattern compile(String regex) 주어진 정규식을 갖는 패턴을 생성
Matcher matcher(CharSequence input) 패턴에 매칭할 문자열을 입력해 Matcher를 생성

 

Matcher

 

boolean find() 패턴이 일치하는 다음 문자열을 찾는다
다음 문자열이 있다면 true

 

String group(int group) 매칭되는 문자열 중 group번째 그룹의 문자열 반환
0은 그룹의 전체 패턴을 의미 group(0) = group()

 

 

더 많은 메서드를 확인하려면

 

https://girawhale.tistory.com/77

 

[Java] Pattern, Matcher Class 사용법과 메소드 정리

자바에서는 정규식을 활용해 문자열을 검증, 탐색을 돕는 Pattern, Matcher 클래스를 제공해준다. 다음에도 쉽게 활용할 수 있도록 정리하려고 한다. 👨‍🏫 클래스 분석 Pattern 정규 표현식이 컴파

girawhale.tistory.com

 

 

이미지 uri가 요청되었을때, 썸네일을 파일명을 만들어보자.

 

Pattern pattern = Pattern.compile("<img src=\"([^\"]+)"); //"나 \ 가 없는 src 친구 (소스 uri 그대로임)
Matcher matcher = pattern.matcher(dto.getContent()); //매칭되는지

String previewImageSrc = null; //
while (matcher.find()) {
    if(matcher.group(1).startsWith("http://192.168.151.35")) { //소스코드가 여기서 왔다면
        previewImageSrc = matcher.group(1); //그친구의 이미지는 previeImage가 되는데, TODO: 이미지가 여러개일때? 확인해보기
        break;
    }
}

if(previewImageSrc != null && previewImageSrc.contains("/")){ // 중간에 슬래시가 있다 ->
    int index = previewImageSrc.lastIndexOf("/");
    previewImageSrc = "thumb_" + previewImageSrc.substring(index + 1);
}

 

.compile 함수에 왜 ( ) 가 있는지 몰랐다 . matcher의 그룹명을 위함이었다. 

 

참고: 

https://enterkey.tistory.com/353

 

[JAVA] 정규표현식, Matcher 메서드 사용방법과 그룹 개념이해

Matcher 클래스 메서드들 find() : 패턴이 일치하는 경우 true를 반환하고, 그 위치로 이동(여러개가 매칭되는 경우 반복 실행가능) find(int start) : start위치 이후부터 매칭검색을 수행 start() : 매칭되는

enterkey.tistory.com

 

그 후 lastIndexOf 함수를 사용해 문자열을 쪼개준다.

참고 :

https://codechacha.com/ko/java-string-indexof-lastindexof-java/

 

Java - indexOf(), lastIndexOf()으로 문자열의 위치 찾기

자바 String의 indexOf()와 lastIndexOf()의 사용 방법에 대해서 정리하였습니다. indexOf와 lastIndexOf는 String에서 특정 문자열의 인덱스를 찾는데 사용하는 메소드입니다.

codechacha.com

 

 

C++로 코딩테스트를 준비하다가 자바를 통해 문자열을 관리하려니 약간 어색한것같다. 좀더 공부하자!!

'TIL' 카테고리의 다른 글

http 메소드 차이 정리  (0) 2022.12.26
@Column (name = " " ) name 대소문자 관리  (0) 2022.12.26
오라클 MERGE문  (0) 2022.12.16
[자바] Execute, ExecuteQuery, ExecuteUpdate 차이점  (0) 2022.12.16
ResultSet  (0) 2022.12.13