반응형

 최근 코딩테스트를 진행하면서 정규표현식과 관련된 문제가 나와 다시 한번 정리해 보기로 결심했다. 

정규표현식이란 특정 규칙을 가진 문자열을 표현하기 위해 쓰이는 식입니다. 개발을 진행하면 보통 주민등록번호, 휴대폰 번호, 이메일주소와 같이 정해져 있는 규칙이 있고 사용자가 형식에 맞게 입력했는지 검증할때 주로 사용합니다.

사실 기존에 정규표현식을 사용할 일이 있으면 구글링을 통해 정규표현식을 확인하고 사용해서 규칙을 정확히 숙지하고 있지 않았습니다. 근데 코딩테스트에서 검색없이 진행하려니 많은 어려움이 있었습니다.

 

아래는 정규표현식의 기본 작성법입니다.

자바에서는 이러한 정규표현식을 사용하기 위해 Pattern과 Matcher클래스를 사용합니다. 간단한 예제를 통해 살펴보겠습니다.

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

public class Main {
    public static void main(String[] args) {

        // test를 위한 임시 String 배열
        String[] names = {"seungwoo", "sw", "jsw"};

        // 소문자 sw로 시작하는 단어
        Pattern pattern = Pattern.compile("sw[a-z]*");

        for (String name : names) {

            // 정규식으로 비교할 대상을 매개변수로 Pattern 클래스의 matcher 메서드를 호출해 인스턴스를 얻음
            Matcher matcher = pattern.matcher(name);

            // 정규식에 부합한지 체크
            if (matcher.matches()) {
                System.out.println(name);
            }
        }
    }
}

 

결과

 

Pattern클래스의 compile메서드를 통해 정규표현식으로부터 패턴을 만듭니다. 이후 패턴에 맞는 Matcher 객체를 pattern.matcher 메서드를 통해 반환하고 정규식에 부합한지 체크하는 과정입니다.

 

Matcher클래스의 matches 메서드는 정규식에 부합하면 true, 부합하지 않으면 false를 반환합니다.

Pattern과 Matcher 클래스의 더 상세한 메서드는 API를 통해 쉽게 확인할 수 있습니다.

 

정규표현식의 사용법은 간단하나 정규표현식 기본규칙을 암기하고 있지 않으면 이러한 문제를 만났을때 당황할 것 같습니다.

사실 모든걸 외울 수는 없으나 기본적인 정규표현식 규칙은 암기하고 있어야 할 것 같습니다.

 

반응형

+ Recent posts