Skip to main content

Java 정규식(Regular Expression)


1. 개요

정규표현식(Regular Expression)은 특정 문자열을 패턴에 맞게 검색, 대체, 검증하는 데 사용되는 강력한 도구이다. 자바에서는 java.util.regex 패키지를 통해 정규표현식을 사용할 수 있다.

1.1. 정규표현식 구성 요소

정규표현식은 기본적인 문법과 특수 문자를 조합하여 만들어지며, 자주 사용되는 몇 가지 주요 구성 요소가 있다.

  • 문자 클래스: [ ]
    • 예: [a-z]는 소문자 알파벳을 의미한다.
  • 수량자: {n,m}, +, *, ?
    • 예: a{2,4}는 'a'가 2번 이상 4번 이하 나타나는 패턴을 의미한다.
  • 메타 문자: ^, $, ., |, \
    • 예: ^abc는 'abc'로 시작하는 문자열을 의미한다.

1.2. 자주 사용되는 패턴

  • .: 임의의 한 문자 (개행 문자를 제외)
  • \d: 숫자 (0-9)
  • \w: 알파벳 및 숫자, 밑줄 (a-zA-Z0-9_)
  • \s: 공백 문자 (탭, 스페이스 등)
  • \b: 단어 경계

2. 자바에서 정규표현식 사용하기

2.1. Pattern 클래스

Pattern 클래스는 정규표현식의 패턴을 컴파일하는 데 사용된다. 이 클래스는 정규표현식 패턴을 매칭하고 검색하는 방법을 제공한다.

2.1.1. Pattern 컴파일

Pattern pattern = Pattern.compile("a*b");

위의 코드에서 "a*b"는 'a'가 0번 이상 반복되고 뒤에 'b'가 오는 패턴을 의미한다.

2.1.2. Matcher 클래스 사용

Matcher 클래스는 Pattern 객체를 사용하여 문자열과의 매칭을 처리한다.

Pattern pattern = Pattern.compile("a*b");
Matcher matcher = pattern.matcher("aaab");
boolean matches = matcher.matches(); // true

2.2. PatternMatcher의 주요 메서드

  • matches(): 전체 문자열이 정규표현식에 맞는지 확인
  • find(): 패턴이 문자열 내에서 부분적으로 일치하는지 확인
  • replaceAll(): 일치하는 부분을 다른 문자열로 대체

3. 정규표현식 활용 예시

3.1. 이메일 주소 검증

이메일 주소가 유효한지 검사하는 정규표현식 예시

Pattern pattern = Pattern.compile("^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$");
Matcher matcher = pattern.matcher("example@domain.com");
boolean isValid = matcher.matches(); // true

3.2. 전화번호 형식 검증

전화번호 형식이 맞는지 검사하는 정규표현식 예시

Pattern pattern = Pattern.compile("^\\d{3}-\\d{3,4}-\\d{4}$");
Matcher matcher = pattern.matcher("010-1234-5678");
boolean isValid = matcher.matches(); // true