본문 바로가기
Programming/JAVA

[JAVA] 정규 표현식 (regex)

by JeeU147 2021. 12. 12.
반응형

안녕하세요

 

이번에는 정규 표현식 (regex)에 대해 알아보려고 합니다.

 

정규 표현식이란?
- 정규 표현식은 줄여서 정규식이라고도 하며 영어로는 Regular Expression라고도 한다. 정규 표현식은 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 쓰이는 형식 언어이다.

 

정규 표현식을 사용하는 이유

- 어떤 문자열에서 특정한 조건의 문자열을 찾고 싶을 때, 그 조건이 복잡하다면 정규 표현식이 도움이 될 수 있다.

- 민감정보 추출, 텍스트 데이터 전처리에 주로 사용

- ex) 주민번호, 핸드폰 번호 등

 

자주 사용하는 정규 표현식 예시

 

- 주민등록번호 : ^(.*)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|[3][01])\\-[1-4][0-9]{6}(.*)$

- 여권번호 : ^(.*)[a-zA-Z]{1}[0-9a-zA-Z]{1}[0-9]{7}(.*)$

- 외국인등록번호 : ^(.*)([01][0-9]{5}[[:space:]~-]+[1-8][0-9]{6}|[2-9][0-9]{5}[[:space:]~-]+[56][0-9]{6})(.*)$
- 운전면허번호 : ^(.*)[0-9]{2}[-~.[:space:]][0-9]{6}[-~.[:space:]][0-9]{2}(.*)$
- 전화번호 : ^(.*)01[016789][-~.[:space:]][0-9]{3,4}[-~.[:space:]][0-9]{4}(.*)$
- 이메일주소 : ^(.*)[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}(.*)$

- 숫자로만 되어 있는 정규 표현식 : /^[0-9]*$/
- 알파벳으로만 되어 있는 정규 표현식 : /^[a-zA-Z]*$/
- 한글로만 되어 있는 정규 표현식 : /^[가-힣]*$/
- 알파벳과 숫자로만 되어 있는 정규 표현식 : /^[a-zA-Z0-9]*$/
- 한글과 숫자로만 되어 있는 정규 표현식 : /^[가-힣0-9]*$/

 

※ 테스트를 다 마친 정규 표현식이지만 오류가 있다면 댓글로 알려주시면 감사하겠습니다!

 

자바에서 정규 표현식을 사용 하는 예제

String num = "010-1234-1234";

boolean match = num.matches("^(.*)01[016789][-~.[:space:]][0-9]{3,4}[-~.[:space:]][0-9]{4}(.*)$");

System.out.println(match); // true

 

오늘은 정규 표현식에 대해 알아보았습니다!

 

감사합니다!

반응형

댓글