본문 바로가기

Java 기본 문법 - 참조 서적 [이것이 자바다 - 한빛미디어]/9. 기본 API 클래스

10. Java 자바 [API] - 정규 표현식, Pattern 클래스

 

 

문자열이 정해져 있는 형식 (정규 표현식 : Regular Expression) 으로 구성되어 있는지 검증해야 하는 경우가 있다.

(이메일, 전화번호 등..)

 

 

1. 정규 표현식 작성 방법

 

java.util.regex.Pattern 클래스를 찾아 Summary of regular-expression constructs 를 참조한다.

 

정규 표현식은 문자 또는 숫자 기호와 반복 기호가 결합 된 문자열이다.

 

기호 설명표

기호

설명

[ ]

한 개의 문자

[abc]

a, b, c 중 하나의 문자

[^abc]

a, b, c 이외의 하나의 문자

[a-zA-Z]

a~z, A~Z 중 하나의 문자

\d

한 개의 숫자 [0-9] 와 동일

\s

공백

\w

한 개의 알파벳 또는 한 개의 숫자, [a-zA-Z_0-9] 와 동일

?

없음 또는 한 개

*

없음 또는 한 개 이상

+

한 개 이상

{n}

정확히 n개

{n,}

최소한 n개

{n,m}

n개에서부터 m개까지

( )

그룹핑

 

예) 전화번호 010-1234-5678 같은 정규 표현식

 

(02|010)-\d{3,4}-\d{4}

 

 

(02|010) : 02 또는 010

 

- : - 포함

 

\d{3,4} : 3 자리 또는 4 자리 숫자

 

- : - 포함

 

\d{4} : 4 자리 숫자

 

 

예) 이메일 정규 표현식

 

\w+@\w+\.\w+(\.\w+)?

 

\w+ : 한 개 이상의 알파벳 또는 숫자

 

@ : @ 기호

 

\w+ : 한 개 이상의 알파벳 또는 숫자

 

\. : .

 

\w+ : 한 개 이상의 알파벳 또는 숫자

 

(\.\w+)? : \.\w+ 이 없거나, 한 번 더 올 수 있음

 

 

주의!

 

\. : 문자로서의 점 (.)을 말하지만,

. : 모든 문자 중에서 한 개의 문자를 뜻한다.

 

 


2. Pattern 클래스

 

정규 표현식으로 문자열을 검증하는 방법은

java.util.regex.Pattern 클래스의 정적 메소드인 matches() 메소드가 제공한다.

 

boolean result = Pattern.matches(“정규식”, “검증할 문자열”);

 

예) PatternExample.java : 문자열 검증하기

 

public class PatternExample {
    public static void main(String[] args) {
        String regExp = “(02|010)-\\d{3,4}-\\d{4}”;
        String data = “010-123-4567”;
        boolean result = Pattern.matches(regExp, data);
        if(result) {
            System.out.println(“정규식과 일치합니다.”);   // 일치 출력
        } else {
            System.out.println(“정규식과 일치하지 않습니다.”);
        }

        regExp = “\\w+@\\w+\\.\\w+(\\.\\w+)?”;
        data = “angle@navercom”;
        result = Pattern.matches(regExp, data);
        if(result) {
            System.out.println(“정규식과 일치합니다.”);
        } else {
            System.out.println(“정규식과 일치하지 않습니다.”);  // . 이 없어서 불일치 출력
        }
    }
}