[JAVA] 문자열에서 원하는 데이터를 추출하자!

비비·2021년 3월 10일
0

개발

목록 보기
1/1
post-thumbnail

✍ 개요

시스템 로그에서 필요한 정보를 추출할 필요가 생겼다.
예를 들면 다음과 같은 로그에서 서버계정, IP, Port번호를 추출해야했다.

Accepted password for admin from 127.0.0.1 port 50382 ssh2

만일 C였다면,

sscanf(message, 
    "Accepted password for %s from %s port %s ssh2",
    &account, &ip, &port);

이런 식으로 했겠지만.. java에서는 scanf가 없어 다른 방법을 찾아봐야 했다.

👍 해결 과정

답은 여기서 찾을 수 있었는데, Macher을 사용하면 된다고 한다!
온라인 테스트 사이트가 있길래 테스트를 해보았다.

좀 더 확실하게 한다면 정규표현식으로 형식을 제한해야겠지만..
그렇게 크리티컬한 서비스도 아니고 해서 이정도로 진행을 했다.

🔖 소스코드

실제 java 소스코드는 다음과 같다.

String message = "Accepted password for admin from 127.0.0.1 port 50382 ssh2";
Pattern pattern = Pattern.compile("Accepted password for (.*) from (.*) port (.*) ssh2");
Matcher matcher = pattern.matcher(message);

if (matcher.find())
{
    System.out.println(matcher.group(1));	// admin
    System.out.println(matcher.group(2));	// 127.0.0.1
    System.out.println(matcher.group(3));	// port
}
profile
안녕하세요 :)

0개의 댓글