[JAVA] 정규표현식 기본 패턴에 대해 알아보자.

Lord·2023년 12월 6일

JAVA

목록 보기
1/7
post-thumbnail

정규표현식 (Regular Expression) 이란?


정규표현식은 특정 문자열의 규칙을 가지는 문자열 집합을 표현하는데 사용되는 표현 방식이다. 여기서는 자바를 중심으로 설명하지만 다른 언어에서도 사용 가능한 표현식이니 되도록 자주 사용되는 정규표현식은 알아 두는 것이 좋다.

정규표현식은 대부분 코딩테스트 문제를 풀면서 많이 접했을 것이다. 예를 들면, 영어만 사용되어야 하거나 숫자와 영어만을 문자열에서 추출해야하거나.. 등등 여러 예시가 존재한다. 대부분 split(), contains()와 같은 문자열 처리 함수를 사용하는 개발자도 있겠지만 정규표현식을 사용하면 쉽게 해결이 가능하다. 아래는 평소 자주 사용하는 정규표현식에 대해 정리해보았다.

자주 사용되는 정규표현식


상황에 따라 정규표현식이 아닌 자바 내장 라이브러리 함수를 이용하는 것이 편리할 때가 있지만 for 문의 반복이나 불필요한 if, else를 줄이기 위해 정규표현식을 활용하는 것도 좋은 개발자가 되는 방법이다.

1. 정규식 기본 기호

아래 표에서 \으로 표시되는 부분은 역슬래시이다.

기호내용종류
.임의의 문자 1개
^어떤 문자로 시작할지 or [ ]와 쓰이면 부정의 의미^a : a로 시작하는 문자열, [^a] : a가 아닌 문자 1개
$기호 앞의 문자열로 문자열이 끝나는지a$ : a로 끝나는 문자열
[ ]괄호안의 문자가 있는지 확인[ab] : a,b 중 한 문자가 포함
[^]관호안의 문자를 제외한 문자열[^a-c] : 알파벳 소문자 a부터c를 제외한 모든 문자
{}괄호안의 문자 개수a{5}b : a가 5번 오고 b가 옴
\\w문자만 허용(a-z,A-Z,0-9)
\\w문자가 아닌 경우만 허용!(a-z,A-Z,0-9)
\\d숫자만 허용(0-9)
\\D숫자가 아닌 경우만 허용!(0-9)
\\s공백, 탭만 허용(space,tab,newline)
\\S공백, 탭이 아닌 경우만 허용!(space,tab,newline)

2. 정규식 수량을 나타내는 기호

기호내용종류
?기호 앞의 표현식이 없거나 1개a1? : 1이 0개 또는 1개 (a or a1)
*기호 앞의 표현식이 없어나 여러개a1* : 1이 0개 또는 여러 개 (a or a1 or a11...)
+기호 앞의 표현식이 1개 이상a2+ : a뒤에 2가 1개 이상

3. 정규식 그룹에 사용하는 기호

기호내용
()그룹
(\?\:)찾지만 기억하지는 않음
(?=)=앞 문자를 기준으로 전방 탐색
(?<=)=뒤 문자를 기준으로 후방 탐색

4. 자주 사용되는 표현식

정규표현식내용
^[0-9]*$숫자만을 포함하는 문자열
^[a-z|A-Z]*$대소문자 구분 없이 영문만 포함하는 문자열
^[a-zA-Z0-9]+@[0-9a-zA-Z]+\\.[a-z]+$이메일에 대한 정규표현식
^[\\d]{11}+$핸드폰 번호에 대한 정규표현식 (01012345678)
^[\\d]{6}-[1-4][\\d]{6}+$주민등록번호에 대한 정규표현식
^[\\d]{3}-[\\d]{2]+$우편번호에 대한 정규표현식



위에서 언급하지 않은 자주 사용되는 정규표현식외에도 언제든지 앞에서 언급한 문법으로 자신만의 정규표현식을 만들 수 있다.

이번에는 정규표현식에 대한 패턴만을 알아봤고 다음 포스팅에서는 정규표현식의 문법에 사용되는 메서드에대해 알아볼 것이다.

profile
다재다능한 Backend 개발자에 도전하는 개발자

0개의 댓글