정규표현식이란?
- 특정 문자열을 처리할 때 사용하는 방법 중 하나
- 특정 문자열에서 패턴을 검색하거나 치환할 때 사용되며 기존에는 코드로 직접 작성해야 했으나, 이 정규표현식을 이용하면 간단하게 문자열을 처리할 수 있음
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번 이상인 경우 . 한번으로 치환하는 코드이다.
Matcher 대신 String에서 제공해주는 replaceAll 메소드를 직접 이용해 패턴을 설정하고 치환할 수 있다.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); } }
결과
문자열 치환 : a.bb.ccc.dd.e.
'0x10. 프로그래밍 > 0x11. Java' 카테고리의 다른 글
[JAVA] String, StringBuilder/StringBuffer 차이 (0) | 2021.08.13 |
---|