728x90
목적
: 문자열에서 특정한 규칙에 따른 문자열 집합을 표현하기 위해 사용되는 형식언어
사용방법
1. 정규표현식 라이브러리를 import해준다
//통합 라이브러리
import java.util.regex;
//주로 사용하는 클래스
import java.util.regex.Pattern;
import java.util.regex.Matcher;
2. 원하는 클래스를 골라서 사용한다.
1) Pattern 클래스
compile(String regex); | 주어진 정규표현식으로부터 패턴 생성 |
matcher(CharSequence input); | 대상 문자열이 패턴과 일치할 경우 true 반환 |
asPredicate(); | 문자열을 일치시키는데 사용할 수 있는 Predicate 작성 |
pattern(); | 컴파일된 정규표현식을 String 형태로 변환 |
split(CharSequeunce input); | 문자열을 주어진 인자값 CharSequence 패턴에 따라 분리 |
2) Matcher 클래스
matches() | 대상 문자열과 패턴이 일치하는 경우 true 반환 |
find() | 대상 문자열과 패턴이 일치하는 경우 true반환 + 그 위치로 이동 |
find(int start) | start 인자로 받은 위치부터 매칭 체크 |
start() | 매칭되는 문자열의 시작 위치를 반환 |
start(int group) | 지정된 그룹이 매칭되는 시작위치 반환 |
end() | 매칭되는 문자열의 끝 바로 다음 위치 반환 |
end(int group) | 지정된 그룹이 매칭되는 끝 바로 다음 문자 위치를 반환 |
group() | 매칭된 부분 반환 |
group(int group) | 매칭된 부분 중 group번째 그루핑 매칭부분을 반환 |
groupCount() | 패턴 내 그룹핑한 전체 갯수를 반환 |
문법
1. 정규표현식 문법
더보기
^ | 문자열의 시작 | \ | 확장 문자의 시작 |
$ | 문자열의 끝 | \b | 단어의 경계 |
. | 임의의 한 문자 | \B | 단어가 아닌 것의 경계 |
* | 문자가 0번 이상 발생 | \A | 입력의 시작부분 |
+ | 문자가 1번 이상 발생 | \G | 이전 매치의 끝 |
? | 문자가 0번 혹은 1번 발생 | \z | 입력의 끝 |
[ ] | 문자의 집합 범위를 나타냄 [0-9] : 숫자 (0부터 9) [a-z] : 알파벳 (a부터 z) 앞에 ^가 나타나면 not을 의미 |
\Z | 입력의 끝이지만 종결자가 있는 경우 |
{ } | 횟수 또는 범위를 의미 | \s | 공백문자 |
( ) | 소괄호 안의 문자를 하나씩 문자로 인식 | \S | 공백문자가 아닌 나머지 문자 |
| | or | \w | 알파벳이나 숫자 |
\d | [0-9]와 동일 | \W | 알파벳이나 숫자를 제외한 문자 |
\D | 숫자를 제외한 모든 문자 |
2. 자주 사용하는 정규표현식
숫자 | ^[0-9]*$ | 전화번호 | ^\d{2,3}-\d{3,4}-\d{4}$ |
영문자 | ^[a-zA-z*$ | 핸드폰번호 | ^01(?:0|1|[6-9])-(?:\d{3}|\d{4}) -\d{4}$ |
한글 | ^[가-힣]*$ | 주민번호 | \d{6}\-[1-4]\d{6} |
이메일주소 | \\w+@\\w+\\.\\w+(\\.\\w+)? | 우편번호 | ^\d{3}-\d{2}$ |
예시
: 터미널에 입력한 문자열이 이메일인지 확인하는 정규표현식
import java.util.regex.Pattern;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
System.out.println("이메일주소를 입력해주세요");
Scanner sc = new Scanner(System.in);
String test = sc.nextLine();
// String email = "kimcoding@codestates.com";
String regExp = "\\w+@\\w+\\.\\w+(\\.\\w+)?";
if(Pattern.matches(regExp, test)) System.out.println("올바른 이메일 주소입니다.");
else System.out.println("정확한 이메일 주소를 입력해 주세요.");
}
}
728x90
'Java & Spring > 옵션정리' 카테고리의 다른 글
[Spring] DI / AOP 핵심 용어 정리 (1) | 2022.08.18 |
---|---|
[Spring] 롬복(Lombok) / SLF4J (0) | 2022.08.17 |
[JAVA] Math.sqrt 없이 제곱근 - 바빌로니아 점화식 (0) | 2022.08.08 |
[관계형DB] 스키마 / ERD / MySQL (0) | 2022.08.07 |
[네트워크] API (진행중) (0) | 2022.08.04 |