Java - 정규식

갓김치·2020년 9월 3일
0

자바 기타

목록 보기
4/8

정규식

  • 텍스트 데이터에서 원하는 형태의 문장을 찾기 위해 만들어졌다.
  • 개인정보(주민번호,전화번호,이메일...)검사 -> 가입 양식에 맞게 입력했는지 검사 -> 욕설방지 검사로 발전
  • 비교는 컴퓨터가 다 해주니 '형태'를 만들어줘야 함

정규식 순서

1. 패턴정의

  • Pattern클래스를 이용하여 패턴을 정의한다.

2. 텍스트와 비교

  • Matcher클래스를 이용하여 패턴과 텍스트를 비교한다.
Pattern p = Pattern.compile("[a-z]*");
Matcher m = p.matcher("chichi");
Matcher mm = p.matcher(""); //없어도 됨
System.out.println(m.matches());//true
System.out.println(mm.matches());//true

정규식 문법

  • ^ : 문자열의 시작 ^a a로 시작
  • $ : 문자열의 끝 a$ a로 끝
  • . : 임의의 한 문자(특문말고 키보드문자) 가능, 백슬래시() 미포함
    • : 앞 문자가 0개 ~ 무한정 있을 수 있음
    • : 앞 문자가 1개 ~ 무한정 있을 수 있음
  • ? : 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

//1. 텍스트가 영문자가 3회 반복되고 이후에 숫자가 하나 이상으로 구성
Pattern p1 = Pattern.compile("[A-Za-z]{3}\\d+");

//2. 텍스트가 핸드폰 번호 형태인 '숫자3개-숫자4개-숫자4개'로 구성
Pattern p2 = Pattern.compile("[0-9]{3}-[0-9]{4}-[0-9]{4}");
Pattern p22 = Pattern.compile("\\d{3}-\\d{4}-\\d{4}");

//3. 텍스트가 핸드폰 번호로 구성
//   01 다음 0,1,7,8,9 - 0을 제외한 숫자, 숫자 3개 - 숫자 4개
Pattern p3 = Pattern.compile("[0][1](0|1|7|8|9)[1-9][0-9]{3}[0-9]{4}");

//4. 텍스트가 주민등록번호로 구성
//   년도 월 일 - 1~4 숫자 6개

//5. 텍스트가 이메일로 구성
//   시작은 영문자 이어야 하고 특수기호는 -, _, \, . 4가지가 포함될 수 있다 ^\\w*(-|_|\\|.)\\w
//	 @ 이후 영문자가 1개~7개가 포함될 수 있다. @\\w{1,7}
//   . 이후 영문자가 2~3개가 포함되어야 한다. (.)\\w{2,3}
//   .kr이 없을 수도 하나 존재할 수도 있다 ?(.kr)
Pattern email = Pattern.compile("^\\w((\\w|-|_|(\')|.)*)@\\w{1,7}.\\w{2,3}(.kr)?");

유용한거

  • 스크립틀릿 리팩토링
    • <%=member\.getMem_(\w+)\(\)\s*%>\${member.mem_$1 }












profile
갈 길이 멀다

0개의 댓글