[java] Jansi를 이용하여 자바 애플리케이션에서 터미널에서 정규식을 이용한 문자열 검색하기

Jansi는 자바에서 ANSI 이스케이프 시퀀스를 처리하는 라이브러리입니다. 이를 통해 자바 애플리케이션에서 터미널 환경에서 ANSI 색상, 스타일 및 커서 제어를 사용할 수 있습니다.

이번 예제에서는 Jansi를 사용하여 터미널에서 정규식을 이용하여 문자열을 검색하는 방법을 살펴보겠습니다.

Jansi 설치하기

Jansi를 사용하기 위해 다음과 같이 Maven 의존성을 추가해야 합니다.

<dependency>
    <groupId>org.fusesource.jansi</groupId>
    <artifactId>jansi</artifactId>
    <version>1.18</version>
</dependency>

정규식을 이용한 문자열 검색하기

아래 예제 코드는 Jansi를 사용하여 터미널에서 입력한 문자열 중에서 정규식 패턴과 일치하는 문자열을 검색하는 기능을 구현한 것입니다.

import org.fusesource.jansi.AnsiConsole;

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class TerminalSearch {
    public static void main(String[] args) {
        // ANSI 색상 지원을 위해 AnsiConsole.systemInstall()을 호출합니다.
        AnsiConsole.systemInstall();

        // 사용자로부터 입력을 받기 위해 Scanner를 생성합니다.
        Scanner scanner = new Scanner(System.in);

        System.out.print("검색할 문자열을 입력하세요: ");
        String input = scanner.nextLine();

        System.out.print("정규식 패턴을 입력하세요: ");
        String regexPattern = scanner.nextLine();

        // 입력한 정규식 패턴을 컴파일합니다.
        Pattern pattern = Pattern.compile(regexPattern);

        // 검색 대상 문자열에 대해 정규식 패턴을 검색합니다.
        Matcher matcher = pattern.matcher(input);

        while (matcher.find()) {
            // 매칭된 문자열에 ANSI 색상 및 스타일을 적용하여 출력합니다.
            System.out.println(AnsiConsole.ansi().fg(AnsiConsole.Color.RED).a(matcher.group()).reset());
        }

        // Scanner를 닫습니다.
        scanner.close();

        // ANSI 색상 지원을 해제합니다.
        AnsiConsole.systemUninstall();
    }
}

위 예제 코드를 실행하고 터미널에서 검색할 문자열과 정규식 패턴을 입력하면 입력한 문자열 중에서 정규식 패턴과 일치하는 문자열이 강조되어 출력됩니다.

터미널 환경에서 문자열을 검색할 때 Jansi를 이용하면 보다 직관적이고 다양한 검색 결과를 표현할 수 있습니다.

참고 자료