정규표현식?
- 문자열 데이터 중 원하는 부분 문자열을 찾기 위해 사용하는 것. 미리 정의된 기호 문자를 이용해서 작성한 문자열
개발을 하다 보면, 전화번호, 이메일 같이 정해진 형식이 있고, 사용자가 그 형식을 제대로 입력했는지 검증할 필요가 있다. 사용자에게서 넘어온 입력값이 형식에 맞는지 체크할 때 정규 표현식을 이용하면 쉽다.
많은 양의 문자열에서 원하는 데이터를 쉽게 뽑기 위해 주로 사용된다.
기본 기호
기호 | 설명 | 예제 |
. | 임의의 문자 1개를 의 | |
^ | 시작을 의미 [ ] 괄호 안에 있다면 일치하지 않는 부정의 의미로 사용 |
^c : c로 시작하는 단어 [^c] : c가 아닌 철자인 문자 1개 |
$ | $앞에 문자열로 문자가 끝나는지 의미 | a$ : a로 끝나는 단어 |
[ ] | [ ] 괄호 안의 문자가 있는지를 확인 | [ab][cd] : a,b중 문자와 c,d중 한 문자 ac, ad,bc,bd |
[ ^ ] | [ ] 대괄호 안에 ^ 문자가 있으면 제외 대괄호 밖에 ^가 있으면 시작점 |
[^a-z] a~z까지를 제외한 모든 문자 |
- | 사이의 문자 혹은 숫자 | [a-z] a~z까지 중 하나 [a-z0-9] a ~z 또는 0~9 중 하나 |
| | 또는 | [a|b] a 또는 b |
() | 그룹 | 01(a|b) 01a (true) 01b (true) 01c (false) |
{ } | 개수 | a{3}b aaab,aaaaab (true) ab (false) |
\b | 공백 탭 "," "/" 등을 의미 | hi\b hi 뒤에 공백 탭 , / 이 있다 hi, hi , hi/ (true) hihi (false) |
\B | \b의 반대 공백, 탭, "," "/"이 아닌 경우 일 |
hi\b hi 뒤에 공백 탭 , / 이 없다 hi, hi , hi/ (false) hihi (true) |
\d | 0~9 사이의 숫자 [0-9]와 동일 |
|
\D | \d의 부정 숫자가 아닌 어떤 문자, [^0-9]와 동일 |
|
\s | 공백, 탭 | |
\S | 공백, 탭이 아닌 문자 | |
\w | 알파벳 대/소문자/숫자+"_" [a-zA-Z_0-9]와 동일 |
|
\W | \w의 부정 [^a-zA-Z_0-9] |
수량 기호
기호 | 설명 | 예제 |
? | ?앞의 표현식이 없거나 최대 하나 | hib? hi (true) hib (true) hibb (false) |
* | *앞의 표현식이 없거나 여러개 | hib? hi (true) hib (true) hibb (true) |
+ | +앞의 표현식이 1개 이상 or 여러개 | hib? hi (false) hib (true) hibb (true) |
{n} | 딱 n개 | a{3} aaa (true) a (false) |
{n,m} | n~m | a{3~4} aaaa (true) aaa (true) a (false) |
{n,} | n이상 | a{1} a (true) aa (true) aaa (true) |
자주 사용되는 예제
표현식 | 설명 |
^[0-9]*$ | 숫자 |
^[a-zA-Z]*$ | 영문자 |
^[가-힣]*$ | 한글 |
\\w+@\\w+\\.\\w+(\\.\\w+)? | 이메일 |
^\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}$ | 우편번호 |
자바 정규식 사용법 java.util.regex
to be.. continue~