17 Feb 2020
정규 표현식
정규 표현식
-
정규 표현식(Regular Expression) -> regex - 문자열을 원하는 패턴으로 처리하는 방법 - 문자열 입력에서 원하는 데이터 방식으로 제한
-
정규 표현식의 필수 요소
- 시작과 끝
- 표현 종류
- 표현 범위
정규 표현식 문법
^: 패턴 시작
$: 패턴 끝
[] : 문자열 종류 및 범위 제한
[a-z] : 소문자 a부터 z까지
[A-Z] : 대문자 A부터 Z까지
[0-9] : 숫자 0부터 9까지
() : 내부의 문자를 하나의 문자로
{} : 개수 및 범위를 표현
{3} : 3자리
{1, 3} : 1자리 ~ 3자리 모두
\* : 적용되는 문자의 길이가 0~무한으로 받게끔.
\d : 숫자
\D : 숫자를 제외한 문자
\w : 영문, 숫자
\W : 영문, 숫자 제외한 문자
\s : 공백 문자
\S : 공백 문자를 제외한 문자
-> \S는 . 문자까지 인식
Escape Sequence : \
- 기존에 문자를 나타낸다면 정해진 기능을 갖게끔,
- 기존에 기능을 가진다면, 그냥 문자로 표현하게끔
\" : " 문자
\' : ' 문자
\n : 개행 문자
\t : 탭 문자
\+ : 구분자로 활용
| : or 연산자
(?i) : 대소문자 무시
...
**
\w -> 자바 문자열 특수문자로 제공하지 않아 컴파일 에러 발생
\\w -> 자바 문자열이 아닌 정규 표현으로 사용하겠다.
**
정규 표현식 사용 예시
// 문자로 이루어진 문장인지 검사하는 패턴 예시
String pattern = "^[a-zA-Z]*$";
String str1 = "abcdEFGHijk"; // 패턴 일치
String str2 = "123"; // 패턴 불일치
if(Pattern.matches(pattern, str1)) {
System.out.println("패턴 일치");
} else {
System.out.println("패턴 불일치");
}
// 숫자로 이루어진 문자열인지 검사하는 패턴 예시
Pattern.compile("(^[0-9]*$)");
String str1 = "123"; // 패턴 일치
String str2 = "abcdEFGHijk"; // 패턴 불일치
// 전화번호 검사를 위한 패턴 예시
Pattern.compile("^[0-9]{2-3}-[0-9]{3-4}-[0-9]{4}$");
String str1 = "123-1234-1234"; // 패턴 일치
String str2 = "12-12-123"; // 패턴 불일치
// 이메일 주소 검사를 위한 패턴 예시
pattern ="^\\w*@\\w*\\.\\w*$";
String str1 = "a123@aaa.com"; // 패턴 일치
// 핸드폰 번호 검사를 위한 패턴 예시
pattern = "^01(?:0|1|[6-9])-\\d{4}-\\d{4}$";
String str1 = "010-1234-1234"; // 패턴 일치
String str2 = "010-123-1234"; // 패턴 불일치
// 주민등록번호 검사를 위한 패턴 예시
pattern = "^\\d{6}-[1-4]\\d{6}$";
String str1 = "123456-1234567"; //패턴 일치
// IP 주소 검사를 위한 패턴 예시
pattern = "^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$";
String str1 = "192.168.1.2"; // 패턴 일치
// 파일 확장자 검사를 위한 패턴 예시
pattern = "^\\S+.(?i)(pdf|hwp|doc|java|ppt)$";
String str1 = "Regex.java"; // 패턴 일치
String str2 = "1.doc" // 패턴 일치
String str3 = "R_최종.ppt"; // 패턴 일치
Til next time,
Jeong-Yoon
at 00:00
