자바 정규표현식
. : 임의의 한 문자(필수)
ex) ab. => abc, abd, abe
? : 바로 앞의 문자가 없거나 하나가 있음을 의미
ex) a?c => ac, abc, bc
* : 바로 앞의 문자가 없거나 하나 이상 반복
ex) ab* => a, ab, abb, abbb
+ : 바로 앞의 문자가 하나이상 반복
ex) ab+ => ab, abb, abb
^ : 문자열의 시작을 의미
ex) ^a => ab, abc, abcd
[^] : ^이후의 괄호안 형식은 제회
ex) ab[^c]+ : abd, abe, [^c] 자체가 한글자를 의미함
$ : 문자열의 끝을 의미
ex) abc$ : ab
[] : []안의 형식 일치
ex) [abc] : a, b, c, ab, ac, bc, abc
{} : {}앞 문자열 반복갯수
ex) ab{3} : ababab
ab{2,} : ab, abab, ababab, abababab
ab{1, 2} : ab, abab
() : ()안의 내용을 하나로 묶음
ex) (ab){2} : abab
| : or 연산
ex) (a|b|c) : a, b, c, ab, ac, bc, abc
[a-z] : 소문자
[A-Z] : 대문자
[0-9] : 숫자
[a-zA-Z0-9] : 영문, 숫자
자바에서 이용할 경우
String의 matchers 또는 Pattern 클래스와 Matchers 클래스 사용
public static void main(String[] args) {
String regExpStr = "^a.c$";
String[] strArr = {"abc", "acc", "adc", "aec", "afc", "agc", "ahc", "aiic"};
for(String str : strArr) {
System.out.println("[" + str + "] : " + str.matches(regExpStr));
}
// email 형식 정규식
// 개인적으로 해보니 ^$는 꼭 써줘야 겠음
String regExpStr2 = "^[a-zA-Z0-9]+[@][a-zA-Z0-9]+[\\.][a-zA-Z0-9]+$";
String emailStr = "babolsk@bbb.com";
Pattern pattern = Pattern.compile(regExpStr2);
Matcher match = pattern.matcher(emailStr);
// 매칭에 맞을 경우 true
System.out.println("[" + emailStr + "] : " + match.find());
}