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. Pattern
과 Matcher
의 주요 메서드
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