[자바/Java] 정규표현식
2022. 2. 13.

정규표현식(regex)는 일정한 패턴을 표현하는 일종의 형식 언어이다.

주민번호, 차량번호, 전화번호 같이 어떤 일정한 모양새가 있는 곳에 사용하면 개발시에 편리하게 쓸 수 있고 자바 외에도 파이썬, 자바스크립트, c, c++ 등에도 사용이 가능하다.

 

 

일단 몇 가지 기호들을 정리해보겠다.

기호 설명
[] 문자의 집합 범위. 두 문자 사이는 -기호로 나타내고, ^가 선행되면 not을 의미한다
[abc] a, b, c 중 하나의 문자
[^abc] a, b, c 이외 하나의 문자
[a-zA-Z] a-z, A-Z 중 하나의 문자
\ 백슬러시 뒤에 일반 문자가 오면 특수문자로 취급하고 특수 문자가 오면 그 문자 자체를 뜻함
\d or [0-9] 한개의 숫자
\s 공백
\w 한 개의 알파벳 또는 한개의 숫자 = [a-zA-Z_0-9]
? 앞 문자가 없거나 하나있음
* 앞 문자가 없음 또는 한개 이상
+ 앞 문자가 한개이상
^ 문자열의 시작
$ 문자열의 종료
. 임의의 한 문자
| or연산
{} 횟수 또는 범위를 나타냄
{n} n개
{n,} 최소 n개
{n, m} n개에서 부터 m개까지
() 괄호 안의 문자를 하나의 문자로 인식

이렇게 정의해도 막상 실제로 쓰인 정규식을 보거나 정규식을 직접 작성해보면 헷갈려서 자주 사용되는 것들은 따로 암기가 필요할 것 같다.

정규식 설명
^[0-9]*$ 숫자
^[a-zA-Z]*$ 영문자
^[가-힣]*$ 한글
\\w+@\\w.\\w+(\\.\\w+)? 이메일
^\d{2,3}-\d{3,4}-\d{4}$ 전화번호
\d{6} \- [1-4]\d{6} 주민등록번호

 

자바의 경우에는 replaceAll에서 정규표현식을 이용해서 문자열을 바꿀 수도 있고,

Pattern클래스의 matches()를 이용하면 문자열이 정규식에 해당되는지도 태스트 해볼 수 있다.

myoskin