안녕하세요. 제임스 입니다. 


앞서 정규표현식으로 파일 확장자 처리 하는 방법을 포스팅 했었는데요. 

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


블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,