Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 정규식(Regex)으로 패턴 일치를 수행하는 방법

정규식(Regular Expression)은 입력 텍스트를 검색하거나 처리하기 위한 패턴을 정의하는 특수 문자열입니다. 하나 이상의 문자로 구성될 수 있으며, 정규식을 활용하면 문자열을 손쉽게 검색하거나 치환할 수 있습니다.

Java는 정규식 기반의 패턴 매칭을 위해 java.util.regex 패키지를 제공합니다. 이 패키지의 핵심인 Pattern 클래스는 컴파일된 정규식의 표현체 역할을 하며, 문자열과 정규식을 매칭하기 위해 다음 두 가지 메서드를 제공합니다.

  • compile(): 정규식을 나타내는 String을 인수로 받아, 컴파일된 Pattern 객체를 반환합니다.
  • matcher(): String 값을 인수로 받아, 현재 Pattern 객체가 나타내는 패턴과 주어진 문자열을 비교할 수 있는 Matcher 객체를 생성합니다.

예제 코드

다음 Java 프로그램은 사용자로부터 문자열을 입력받아, 해당 문자열에 알파벳(대소문자 모두)이 포함되어 있는지 검사합니다. 여기에 숫자도 함께 허용하도록 패턴을 구성했습니다.

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
    public static void main( String args[] ) {
        String regex = "[a-zA-Z][0-9]?";
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter an input string: ");
        String input = sc.nextLine();
        
        //Pattern 객체 생성
        Pattern p = Pattern.compile(regex);
        //Matcher 객체 생성
        Matcher m = p.matcher(input);  
        if(m.find()) {
            System.out.println("Match occurred");
        }else {
            System.out.println("Match not occurred");
        }
    }
}

패턴 해설

위 예제에서 사용된 정규식 [a-zA-Z][0-9]?의 의미는 다음과 같습니다.

  • [a-zA-Z]: 알파벳 대문자 또는 소문자 한 글자와 일치합니다.
  • [0-9]?: 숫자 한 글자가 있거나 없어도 됩니다(?는 0회 또는 1회 출현을 의미).

실행 결과 1

Enter an input string:
sample text
Match occurred

실행 결과 2

Enter an input string:
sample text 34 56
Match occurred

이처럼 Pattern.compile()로 정규식을 컴파일하고, Matcher 객체의 find() 메서드를 호출하면 입력 문자열 내에서 패턴과 일치하는 부분이 존재하는지 간단히 확인할 수 있습니다.