본문 바로가기
programming language/Autohotkey

Autohotkey Regular expression을 이용한 음악파일 이름 변경

by __observer__ 2012. 4. 19.
반응형

음악 파일 이름 등을 일괄 변경 하는 경우 이전에 말씀 드린 NexusFile 등과 같은 프로그램의 파일이름 바꾸기 도구 등을 이용하면 대부분 편리하게 변경이 가능합니다.

 

2011/03/26 - [컴퓨터일반] - NexusFile 을 이용한 파일 이름 일괄 변경

 

하지만 이런 툴 들도 개발자가 만들어준 틀 안에서만 바꿀수 있기 때문에 내 마음대로 모든걸 바꾸기에는 한계가 있습니다. 이럴때를 위해 약간의 프로그램 지식을 쌓는 것이 좋다고 생각됩니다.

 

윈도우 운영체제에서라면 Autohotkey 를 공부하시기를 권해 드립니다. 굉장히 쉬우면서도 컴퓨터 사용을 효율적으로 할 수 있게 도와 주는 언어거덩여~~ 물론 영어의 압박도 있고… 나름 노력도 필요하긴 하지만 들어간 노력에 비해 정말 다양한 것들을 할 수 있는 툴이라는 데는 의심의 여지가 없습니다. 


2012/02/22 - [컴퓨터일반] - Autohotkey를 사용해 보아요~


어쨌든 오늘은 Autohotkey 의 정규 표현식을 이용하여 음악 파일 이름 바꾸기를 하다가 제가 최근에 편리하게 사용하게 된 것들에 대해 말씀 드리겠습니다.

 

노블레스(Noblesse)-마음을다한사랑(feat김동희) 라는 이름의 음악 파일이 있습니다.

 

저는 위 파일 이름에서 괄호가 눈에 거슬려서 Autohotkey 의 정규 표현식을 이용하여 괄호를 지우려고 다음과 같이 코딩 했습니다.

 

Temp_File_name=노블레스(Noblesse)-마음을다한사랑(feat김동희) ; 음악 파일 이름

 

NewStr1:= RegExReplace(Temp_File_name, "\(.*\)") ; 괄호와 그 안의 내용 지우기, 탐욕스러운 수량자

MsgBox, %NewStr1% ; 결과 확인

 

위 코드에 대해 간단하게 설명 하면, Autohotkey 에서 정규표현식을 이용하여 매치되는 글자를 변경할 때 사용하는 함수인 RegExReplace()를 사용하여 괄호 [( )]와 그 안의 모든 글자 [ .* ] 를 지우려 했습니다. 여기서 괄호 앞쪽에 \ 이 붙은건 글자 그대로의 괄호를 인식 시키기 위해 \(, \) 이렇게 표현한 겁니다.

 

위 코드의 결과는 이렇게 나옵니다. 제 생각되는 다르게 (Noblesse)-마음을다한사랑(feat김동희) 부분이 다 지워지더군요.

 

 

그래서 정규표현식에 대해 좀 뒤지다 보니… 수량자는 탐욕스러운 연산을 한다고 하네요… 따라서 (Noblesse), (feat김동희) 만 쏙 빼서 지우고 싶으면 탐욕스럽지 않은 연산자를 사용해야 한다고 합니다.

 

그렇담 탐욕스럽지 않은 연산자는 어케 사용하느냐 봤더니 무쟈게 간단하더군요. 걍 수량자 뒤에 물음표 ? 하나만 붙이면 됩니다. ㅋㅋㅋㅋ

 

그래서 탐욕스럽지 않은 연산자로 수정한 코드는 다음과 같습니다.

 

Temp_File_name=노블레스(Noblesse)-마음을다한사랑(feat김동희) ; 음악 파일 이름

 

NewStr2:= RegExReplace(Temp_File_name, "\(.*?\)") ; 괄호와 그 안의 내용 지우기, 탐욕스럽지 않은 수량자

MsgBox, %NewStr2% ; 결과 확인

 

결과는 이렇게 괄호와 그 안의 내용만 쏙 빼서 지우고 나오더군요~~~

 

 

정규 표현식은 Perl 이 갑이긴 한데~~ Autohotkey 에서도 매우 효율적으로 이용할 수 있더군요~~

 

Autohotkey 의 정규 표현식은 Perl-compatible regular expression (PCRE) 이라고 하더군요. 뭐 딱 봐도 알겠지만 Perl 의 정규 표현식 문법을 차용해서 만들어 진 듯 합니다.


반응형

댓글