정규표현식이란?


  • 특정 문자열을 처리할 때 사용하는 방법 중 하나
  • 특정 문자열에서 패턴을 검색하거나 치환할 때 사용되며 기존에는 코드로 직접 작성해야 했으나, 이 정규표현식을 이용하면 간단하게 문자열을 처리할 수 있음
    ex) 이메일 주소 및 핸드폰 번호 검증 등
  • 입력이 불가능한 문자들이 들어있는지 사전에 확인하여 보안상으로도 유용함
    ex) SQL에서 주석으로 표현되는 ' -- 와 같은 문자 확인

 

 

Pattern, Matcher 클래스


  • Pattern 클래스
     - 검색 또는 치환할 패턴을 정의(Compile)하는 클래스
  • Matcher 클래스
     - 패턴을 해석해서 문자열이 일치하는지 확인하는 클래스

 

 

 

예제


  • 이메일 주소 검증
    - 이메일 주소는 대부분 test@test.com 형태로, 아이디 부분은 영문 대/소문자, @는 하나이며 주소에는 .이 하나 이상이 들어간다고 가정했다. 이 정보를 기반으로 패턴을 정의하고 검증하는 과정을 거친다.
      더 자세하게 검증 패턴을 만들기 위해서는 직접 구현하거나 검색을 통해 패턴을 알 수 있다.
import java.util.regex.*;

public class 정규표현식 {
    public static void main(String args[]){
        String strPattern = "[a-zA-Z_0-9]+@[a-zA-Z_0-9-]+[.[a-zA-Z_0-9-]]+";

        Pattern p = Pattern.compile(strPattern);

        String email = "test_01@test.co.kr";

        Matcher m = p.matcher(email);

        System.out.println("이메일 검증 : " + m.matches());
    }
}
결과

이메일 검증 : true
  • 문자열 치환
     - 문자열에서 패턴을 이용해 특정 문자열을 치환할 수 있다. 아래 예제는 . 이 2번 이상인 경우 . 한번으로 치환하는 코드이다.
    import java.util.regex.*;
    
    public class 정규표현식 {
        public static void main(String args[]){
            String strPattern = "\\.{2,}";
            String strTmp = "a.bb..ccc...dd..e.";
            String convTmp = strTmp.replaceAll(strPattern, ".");
            
            System.out.println("문자열 치환 : " + convTmp);
        }
    }​
     Matcher 대신 String에서 제공해주는 replaceAll 메소드를 직접 이용해 패턴을 설정하고 치환할 수 있다.
    결과

    문자열 치환 : a.bb.ccc.dd.e.

 

'0x10. 프로그래밍 > 0x11. Java' 카테고리의 다른 글

[JAVA] String, StringBuilder/StringBuffer 차이  (0) 2021.08.13

+ Recent posts