Regular(정규표현식)
정규표현식
- 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 표현식 언어이다 . : ‘.’가 위치한 곳에는 반드시 임의의 한글자가 위치하여야 한다는 의미
- ‘*‘가 바로 앞의 문자가 없거나 하나 이상 반복한다는 의미
- ’+’: ‘*‘과 흡사하지만 ‘+’는 반드시 하나 이상의 문자가 반복된다는 의미
- ’?’: 바로 앞의 문자가 없거나 하나임을 의미
- ’^’: 문장의 처음을 나타내며 ‘^’가 있는 단어로 문장이 시작됨을 의미
- ’$’ : 문장의 끝을 나타내며, $가 있는 단어로 문장이 끝남을 의미
- []괄호 안의 문자 중 일치하는 것을 검색할 경우 사용
- [abc] : a, b, c, abc 등 문자열에 a, b, c등이 있어야 한다
- [0-9] : 숫자가 포함된 모든 문자열
- [a-z] : 알파벳 소문자가 포함된 모든 문자열(범위)
- ^[a-zA-z0-0] : 영문대소문자 또는 숫자로 시작되는 모든 문자열 검색
- [] 안에서의 ‘^’ 특수문자(부정)
- [] 특수문자 안에 있는 문자를 포함하고 있지 않는 모든 문자열을 찾고자 할 경우
- {} 특수문자 앞의 문자가 반복되는 횟수 의미, {n,m}이면 최소 n, 최대 m 만큼 반복, \d{1,2}는 숫자 1~2자리 숫자가 포함되어있는지, 8\d{1}는 8로 시작하는 2자리 숫자를 나타냄
- () 안에 문자열을 하나의 문자로 취급, (x){n} 는 하위 항목이 됨 즉 x의 내용이 n번 반복되어야 한다
-
or 연산 수행 - [a-zA-Z] 모든 영문자
- 특수문자를 문자 그래도 사용하고 싶다면 특수 문자 앞에는 역슬레시를 써야 한다
- w : [a-zA-Z0-0] 알파벳이나 숫자
- W : [^a-zA-Z0-9] 알파벳이나 숫자를 제외한 문자
- .+(?=:) : 전방탐색 기호 ?=, 다음에 오는 문자가 일치하는 영역에서 제외됨. 예를들어 .+(?=살) 이라면 17살, 18살은 17, 18만 찾음
- ?<= : 뒤에 있는 문자를 탐색
자바 정규 표현식 처리
- java.util.regex 패키지
- Pattern 클래스
Source
import java.util.Scanner;
public class ReqularExam {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("문자열 입력:");
String str = sc.nextLine();
// abc문자 포함
// . : 앞, 뒤로 데이터가 있다
// * : 몇 개 반복될 지 모른다
/*if(str.matches(".*abc.*")){ // 정규표현식 체크
System.out.println("매칭");
}else{
System.out.println("비매칭");
}*/
/*// 숫자만 3자리 입력
//[0-9] : 숫자만 입력
//{} : 앞의 문자가 반복되는 횟수
if(str.matches("[0-9]{3}")){
System.out.println("매칭");
}else{
System.out.println("비매칭");
}*/
//
// 알파벳, 숫자만 5자 이상 입력
// [//w]{5,}
/* if(str.matches("^[a-bA-Z0-9]*${6}")){
System.out.println("매칭");
}else{
System.out.println("비매칭");
}
*/
// 한글만 3자리에서 5자리
if(str.matches("[가-힣]{3,5}"))
System.out.println("매칭");
else
System.out.println("매칭");
}
}