안녕하세요. 제임스 입니다.
앞서 정규표현식으로 파일 확장자 처리 하는 방법을 포스팅 했었는데요.
abcd.tar.gz 와 같이 이중 파일 확장자가 있는 경우도 있습니다.
이런 파일은 어떻게 처리 하는지 알아 보겠습니다.
■ 정규표현식 이중 파일 확장자 처리
1 | String regExp = "^([\\S]+(\\.(?i)(tar)+\\.gz)$)"; | cs |
위 코드는 abcd.tar.gz 파일 확장자를 정규표현식으로 변환한 것입니다.
좀더 디테일하게 정리하면 아래와 같습니다.
^ |
( |
[\\S] |
+ |
( |
\\. |
(?i) |
(tar) |
+ |
\\.gz |
) |
$ |
) |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
1: 정규표현식 시작
2: 첫번째 영역 지정 소괄호 오픈
3: 공백문자가 아닌 문자열
4: 앞의 표현식 (3번) 이 1회 이상 일치 (공백문자가가 아닌 문자열이 꼭 와야 함)
5: 두번째 영역 지정 소괄호 오픈
6: 마침표( . )가 앞의 표현식 뒤에 따라옴
7: 대소문자 구분 없음
8: tar 라는 문자열만 허용
9: 앞의 표현식 (8번) 이 1회 이상 일치
10: .gz 라는 문자열 포함
11: 두번째 영역 지정 소괄호 종료
12: 정규표현식 종료
13: 첫번째 영역 지정 소괄호 종료
앞서 일반적인 파일 확장자 정규표현식과 다른 부분이 위 8, 9, 10 입니다.
8번의 경우 확장자 명을 기존 jpg, png 등 이미지 확장자 명에서 tar 로 변경 한 것입니다.
9번의 경우 8번이 1회 이상 일치 해야 함을 지정 한 것입니다.
10번의 경우 .gz 가 마지막에 따라 와야 함을 지정 한 것입니다.
1 2 3 4 5 6 7 8 9 10 11 | String regExp = "^([\\S]+(\\.(?i)(tar)+\\.gz)$)"; String input1 = "james.tar.gz"; String input2 = "james.zip.gz"; String input3 = ".tar.gz"; String input4 = "james..gz"; System.out.println("input1 정규표현식 적용 결과 ==> "+input1.matches(regExp)); System.out.println("input2 정규표현식 적용 결과 ==> "+input2.matches(regExp)); System.out.println("input3 정규표현식 적용 결과 ==> "+input3.matches(regExp)); System.out.println("input4 정규표현식 적용 결과 ==> "+input4.matches(regExp)); | cs |
input1 은 abcd.tar.gz 라는 파일 형식에 제대로 맞춰서 입력값을 초기화 했습니다.
나머지 변수값들은 좀 비정상 적이죠? ^^;;
Results
input1 정규표현식 적용 결과 ==> true
input2 정규표현식 적용 결과 ==> false
input3 정규표현식 적용 결과 ==> false
input4 정규표현식 적용 결과 ==> false
▼ 도움이 되셨다면 로그인이 필요 없는 ▼
▼ 하트 클릭 한번 부탁 드립니다 ▼
감사합니다 :D
'Java' 카테고리의 다른 글
[ 자바 코딩 ] Java Regular Expression 정규표현식 - 암호 패턴 만들기 (11) | 2018.06.21 |
---|---|
[ 자바 코딩 ] Java Regular Expression 정규표현식 - 한글만 허용 (12) | 2018.06.20 |
[ 자바 코딩 ] Regular Expression 정규표현식 - 파일 확장자 (9) | 2018.06.15 |
[ 자바 코딩 ] Regular Expression 정규표현식 - 영문자만 허용하기 (15) | 2018.06.12 |
[ 자바 코딩 ] Regular Expression 정규표현식 - 숫자만 허용하기 (15) | 2018.05.30 |