Java

정규식 사용법

개발게발 2023. 8. 18. 23:03

정규식 기본 기호

기호 설명 예제
. 임의의 문자 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]
 

 

정규식 수량 기호

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

 

정규식 그룹 캡쳐 기호

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

 

자주 사용되는 정규식 샘플

정규 표현식 설명
^[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}$ 우편번호

 

 

가장 앞 문자가 숫자인지 체크

Boolean ex1 = Pattern.matches("[0-9].*", "people");
Boolean ex2 = Pattern.matches("[0-9].*", "3people");
Boolean ex3 = Pattern.matches("[0-9].*", "people3");

System.out.println(ex1); // false
System.out.println(ex2); // true
System.out.println(ex3); // false

 

모든 문자가 숫자인지 체크

Boolean ex1 = Pattern.matches("[0-9]*$", "123");
Boolean ex2 = Pattern.matches("[0-9]*$", "12p3");

System.out.println(ex1); // true
System.out.println(ex2); // false

 

 

출처 : https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EC%A0%95%EA%B7%9C%EC%8B%9DRegular-Expression-%EC%82%AC%EC%9A%A9%EB%B2%95-%EC%A0%95%EB%A6%AC

 

☕ 자바 정규식(Regular Expression) 사용법 💯 정리

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

inpa.tistory.com