정규식
- 텍스트 데이터에서 원하는 형태의 문장을 찾기 위해 만들어졌다.
- 개인정보(주민번호,전화번호,이메일...)검사 -> 가입 양식에 맞게 입력했는지 검사 -> 욕설방지 검사로 발전
- 비교는 컴퓨터가 다 해주니 '형태'를 만들어줘야 함
정규식 순서
1. 패턴정의
- Pattern클래스를 이용하여 패턴을 정의한다.
2. 텍스트와 비교
- Matcher클래스를 이용하여 패턴과 텍스트를 비교한다.
Pattern p = Pattern.compile("[a-z]*");
Matcher m = p.matcher("chichi");
Matcher mm = p.matcher("");
System.out.println(m.matches());
System.out.println(mm.matches());
정규식 문법
- ^ : 문자열의 시작 ^a a로 시작
- $ : 문자열의 끝 a$ a로 끝
- . : 임의의 한 문자(특문말고 키보드문자) 가능, 백슬래시() 미포함
- ? : 0개 또는 한개 있을 수 있음
- (): (abc) 문자열을 하나의 문자로 인지 or절하고 합쳐서 많이씀
- {}: 반복횟수를 지정한다. {3,5} - 3번,4번,5번 반복 가능
- {4,} - 0,1,2,3번 안되고 4번이상 다 가능
[]: 범위를 지정할때 사용한다. [abc][a-c] abc중에 하나, [a-z]소문자, [A-Z]대문자, [a-zA-z]영문자, [a-zA-Z0-9] 영문자/숫자
- | : or연산을 수행할 때 사용
- \s: 공백문자(스페이스바)
- \S: 공백을 제외한 모든 문자
- \w: 영어 대문자 또는 소문자 또는 숫자 [A-Za-z0-9]와 같은 의미
- \W: 영문자, m숫자 빼고 다
- \d: 숫자 [0-9]
- \D: 숫자빼고 다
RegExTest.java
Pattern p1 = Pattern.compile("[A-Za-z]{3}\\d+");
Pattern p2 = Pattern.compile("[0-9]{3}-[0-9]{4}-[0-9]{4}");
Pattern p22 = Pattern.compile("\\d{3}-\\d{4}-\\d{4}");
Pattern p3 = Pattern.compile("[0][1](0|1|7|8|9)[1-9][0-9]{3}[0-9]{4}");
Pattern email = Pattern.compile("^\\w((\\w|-|_|(\')|.)*)@\\w{1,7}.\\w{2,3}(.kr)?");
유용한거
- 스크립틀릿 리팩토링
<%=member\.getMem_(\w+)\(\)\s*%>
▶ \${member.mem_$1 }