본문 바로가기

JAVA/연습노트

자바 정규식 표 정리본

 

자바 정규식

 

정규표현식(Regular Expression)이란 문자열 데이터 중에서 원하는 조건(패턴)과 일치하는 문자열 부분을 찾아내기 위해 사용하는 것으로, 미리 정의된 기호와 문자를 이용해서 작성한 문자열을 말한다.

입력값을 정해진 형식에 맞는지 검증해야 할 때에는 정규표현식을 사용하면 쉽게 구현할 수 있다.

 

 

 

예시

 

한글, 숫자, 영문, 띄어쓰기 빼고 = 모든 특수문자 제거

public static String StringReplace(String str){

String match = "[^\uAC00-\uD7A30-9a-zA-Z]";

str = str.replaceAll(match, " ");

return str;

}

 

 

숫자 제외 전부 제거

public static String StringReplace(String str){

String match = "[^0-9]";

str = str.replaceAll(match, " ");

return str;

}

 

 

 

정규식 표

 

 

 

정규식 기본 기호

기호 설명 예제
. 임의의 문자 1개를 의미  
^ 시작을 의미한다
[] 괄호 안에 있다면 일치하지 않는 부정의 의미로로 쓰인다
^a : a로 시작하는 단어
[^a] : a가 아닌 철자인 문자 1개
$ $앞의 문자열로 문자가 끝나는지를 의미한다 a$ : a로 끝나는 단어
[] [] 괄호 안의 문자가 있는지를 확인한다 [ab][cd] : a,b중 한 문자와 c,d중 한 문자
→ ac ad bc bd 
[^] [] 대괄호 안에 ^ 문자가 있으면, 제외를 뜻함

- 대괄호 안에 ^ 가 쓰이면 제외의 뜻
- 대괄호 밖에 ^ 가 쓰이면 시작점의 뜻
[^a-z] : 알파벳 소문자 a부터 z까지를 제외한 모든 문자
- 사이의 문자 혹은 숫자를 의미한다 [a-z] : 알파벳 소문자 a부터 z까지 하나
[a-z0-9] : 알파벳 소문자 전체,0~9 중 한 문자
| 또는 [a|b] : a 혹은 b
() 그룹 01(0|1) : 01뒤에 0 또는 1이 들어간다
→ 010(o), 011(o), 012(x)
{} 개수 a{3}b : a가 3번 온 후 b가 온다
→ aab(x), aaab(o), aaaab(o)
\b 공백, 탭, ",", "/" 등을 의미한다 apple\b : apple뒤에 공백 탭등이 있다
→ apple juice (o), apple.com (x)
\B \b의 부정
공백 탭등이 아닌 문자인 경우 매치한다
apple\B
→ apple.com (o)
\d 0~9 사이의 숫자
[0-9]와 동일
 
\D \d의 부정
숫자가 아닌 어떤 문자, [^0-9]와 동일
 
\s 공백, 탭  
\S 공백, 탭이 아닌 문자  
\w 알파벳 대소문자+숫자+"_"

[a-zA-Z_0-9]와 동일
 
\W \w의 부정

[^a-zA-Z_0-9]

 

 

정규식 수량 기호

기호 설명 예제
? 앞의 표현식이 없거나 or 최대 한개만 a1? : 1이 최대 한개만 있거나 없을수도 있다
→ a(o), a1(o), a11(x), a111(x)
* 앞의 표현식이 없거나 or 있거나 (여러개) a1* : 1이 있을수도 없을수도 있다
→ a(o), a1(o), a11(o), a111(o)
+ 앞의 표현식이 1개 이상 or 여러개 a1* : 1이 1개 이상있다
→ a(x), a1(o), a11(o), a111(o)
{n} 딱 n개 있다 a{3} : a가 딱 3개 있다
→ aa(x), aaa(o), aaaa(x), aaaaaaa(x)
{n, m} n개 이상 m개 이하 a{3,5} : a가 3개 이상 5개 이하 있다
→ aa(x), aaa(o), aaaa(o), aaaaaaa(x)
{n,} n개 이상 a{3,} : a가 3개 이상 있다
→ aa(x), aaa(o), aaaa(o), aaaaaaa(o)

 

정규식 그룹 캡쳐 기호

기호 설명
() 그룹 및 캡쳐
(?:) 찾지만 그룹에 포함 안됨
(?=) =앞 문자를 기준으로 전방 탐색
(?<=) =뒤 문자를 기준으로 후방 탐색

 

자주 사용되는 정규식 샘플

정규 표현식 설명
^[0-9]*$ 숫자
^[a-zA-Z]*$ 영문자
^[가-힣]*$ 한글
\\w+@\\w+\\.\\w+(\\.\\w+)? E-Mail
^\d{2,3}-\d{3,4}-\d{4}$ 전화번호
^01(?:0|1|[6-9])-(?:\d{3}|\d{4})-\d{4}$ 휴대전화번호
\d{6} \- [1-4]\d{6} 주민등록번호
^\d{3}-\d{2}$ 우편번호

표 출처: [Inpa Dev 👨‍💻:티스토리]

 

String 클래스의 정규식 문법

String 문자열에 바로 정규표현식을 적용하여 필터링이 가능하다.

String 클래스에서 지원하는 정규식 메소드로는 다음 3가지가 존재한다.

String 정규식 메서드 설명
boolean matches(String regex) 인자로 주어진 정규식에 매칭되는 값이 있는지 확인
String replaceAll(String regex, String replacement) 문자열내에 있는 정규식 regex와 매치되는 모든 문자열을 replacement 문자열로 바꾼 문자열을 반환
String[] split(String regex) 인자로 주어진 정규식과 매치되는 문자열을 구분자로 분할