컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Saturday, March 31, 2007

Perl 펄] 정규식 확장자 추출, 파일명에서; Regex Filename Extension


파일 이름에서, 정규식으로 확장자만 매치하여 추출하는 방법입니다.

다음과 같은 정규식을 이용합니다.
.+\.(\w+)?$


Perl: 정규식으로 확장자 매치하여 추출 예제


스크립트 파일명: example.pl
#!/usr/bin/perl
use strict; use warnings;

  my $filename;
  my $ext;
  my $s;



  # 파일명 정의
  $filename = "test.txt";

  # 확장자 매치 (이 경우는 txt)
  $filename =~ m<.+\.(\w+)?$>;
  # 패스명의 슬래시(/)와 충돌하기에
  # 정규식 구분자를 < 기호로 변경했음

  # 매치된 확장자가 들어간 $1 이라는 변수의 값을 꺼냄
  $ext = $1;
  print "<", $ext, ">\n";
  # 출력 결과: <txt>
  # 알아보기 쉽게 확장자를 <> 기호로 둘렀습니다.
  # 실제는 txt 만 출력됨




  # 공백 들어간 파일명
  $filename = "My Test.doc";
  $filename =~ m<.+\.(\w+)?$>;
  print "<", $1, ">\n";
  # 출력 결과: <doc>


  # 확장자 없는 파일명
  $filename = "Cool";
  $ext = "";
  $ext = $1 if ($filename =~ m<.+\.(\w+)?$>);
  print "<", $ext, ">\n";
  # 출력 결과: <>
  # 아무것도 매치되지 않았기에,
  # $1 의 값은 예전 값인 doc 을 가지고 있음
  # 따라서 if를 사용하여 구현


  # 마침표가 2개 이상인 파일명에서도
  $filename = "Oh... Hmm.Cool.xls";
  print "<", $filename =~ m<.+\.(\w+)?$>, ">\n";
  # <xls>


  # 2중 확장자는 마지막 확장자만 추출
  $filename = "Date.tar.gz";
  print "<", $filename =~ m<.+\.(\w+)?$>, ">\n";
  # <gz>


  # 유닉스/리눅스 히든 파일 (앞에 점 있는 파일)
  $filename = ".inputrc";
  print "<", $filename =~ m<.+\.(\w+)?$>, ">\n";
  # <>
  # 윈도우에서는 이 경우 inputrc 를 확장자로 간주하지만
  # 실은 확장자가 아니기에 없는 것이 정상




정규식을 사용하지 않고, 확장자만 추출하는 함수를 직접 구현: ▶▶ Perl/펄] 파일명에서, 확장자 구하는 함수; Get File Extension Only


File::Basename 모듈을 사용한 가장 편리한 방법: ▶▶ Perl 펄] 패스에서, 디렉토리명/파일명/확장자 분리 추출; Split Path Name




tag: perl
Perl | 펄
tag: regex
정규식 | 정규표현식 | Regex | Regular Expression

0 Comments:

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top