자바의 Pattern Matcher

포모·2020년 12월 11일
0

JAVA API

목록 보기
4/5

프로그램에서 사용자의 입력을 받을 때 올바른 형식에 맞게 입력했는 지 검증해야하는 경우가 많습니다.
이 검증 과정에서 정규 표현식을 사용하면 쉽게 구현하여 보기 편하게 만들 수 있습니다.

정규 표현식(Regular Expression)이란 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 쓰이는 형식 언어입니다.


자주 쓰이는 정규 표현식

정규 표현식설명
^[0-9]*$숫자
^[a-zA-Z]*$영문자
^[가-힣]*$한글
^\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}주민등록번호

사용 방법

String pattern = "^\d{2,3}-\d{3,4}-\d{4}$";
String checkValue = "02-123-4567";
String checkValue2 = "1234-4567-8900";

System.out.println(Pattern.matches(pattern, checkValue);	// true
System.out.println(Pattern.matches(pattern, checkValue2);	// false

문법

정규 표현식설명
^문자열 시작
$문자열 종료
.임의의 한 문자(단
*앞 문자가 없을 수도 무한정 많을 수도 있음
+앞 문자가 하나 이상
?앞 문자가 없거나 하나 있음
[]문자의 집합이나 범위. 두 문자 사이는 -기호로 범위를 나타냅니다. [] 내에서 ^가 선행하여 존재하면 not을 나타냅니다.
{}횟수 또는 범위를 나타냅니다.
()횟수 또는 범위를 나타냅니다.
|패턴 안에 or 연산을 수행할 때 사용
\\ 뒤에 일반 문자가 오면 특수 문자 취급, \ 뒤에 특수 문자가 오면("\b") 그 문자 자체를 의미합니다.("\\")
\b단어의 경계
\B단어가 아닌 것에 대한 경계
\A입력의 시작 부분
\G이전 매치의 끝
\Z입력의 끝이지만 종결자가 있는 경우
\z입력의 끝
\s공백 문자
\S공백 문자가 아닌 나머지 문자
\w알파벳이나 숫자
\W알파벳이나 숫자를 제외한 문자
\d숫자 [0-9]와 동일
\D숫자를 제외한 모든 문자
(?i)앞 부분에 (?!)라는 옵션을 넣어주게 되면 대소문자는 구분하지 않습니다.

🛴 마무리

문법만 제대로 알고 있으면 패턴을 사용하는 것에는 크게 어렵지 않을 것이라고 생각합니다.
패턴을 이용하면 3~4줄의 코드가 1줄의 코드로 정리될 수 있기 때문에 꽤나 유용한 JAVA API라고 생각합니다. 👍


참고

0개의 댓글