아이폰 개발시 문자열에 정규식을 사용하기

|



요즘 맥북과 아이폰에 빠져서 글이 뜸합니다. ^^
이것저것 해보는 재미가 쏠쏠하네요.
Apps를 사용하는데 그치지 않고 XCode를 이용한 iPhone Apps 개발을 조금씩 해보려구 합니다. 

처음으로 해보고 오늘 정리할 내용은 아이폰 어플 개발에서 정규식(Regular Expression)을 사용하는 방법입니다. 
실제 프로그래밍에서 정규식을 사용해보면 편리함 때문에 계속 쓰게 되는데요.
아이폰 어플 개발에서는 찾기가 쉽지 않더라구요. 

기본적으로 OS X에서 정규식을 지원하기 위해 ICU라는 오픈소스 Unicode 라이브러리가 있습니다. 
그런데 이 ICU API가 C/C++에서는 지원되고 있지만 아직 Object-C에는 포함되어 있지 않습니다. 

다행히도 RegexKitLite라는 써드파티에서 만든 라이브러리를 사용하면 쉽게 정규식을 사용할 수 있습니다. 
http://regexkit.sourceforge.net/RegexKitLite/index.html
위 사이트에 접속해 보면 자세한 설명이 영어로 쭉 나옵니다. (영어는 왠지 시러.. -.-)

실제 파일은 SourceForge에서 다운로드 할 수 있습니다. RegexKitLite 다운로드
RegexKitLite-3.3.tar.bz2라는 파일이 다운로드 되는데요.. 
압축을 풀면 예제와 설명 그리고 소스 파일이 존재합니다. 


RegexKitLite.h와 RegexKitLite.m 이 두 파일을 정규식을 사용하려는 XCode Project에 추가하면 사용할 수 있습니다. 

예제를 살펴보시면 알겠지만 간단하게 다음과 같이 사용할 수 있습니다. 

#impot "RegexKitLite.h"
NSString *foo = @"some string to search on";
NSString *regex = @"^(.+?)\s";
NSLog(@"Match: %@", [foo stringByMatching:regex capture:1]);

위와 같이 사용하면 foo에서 regex 정규식에 맞는 문자열을 찾아서 리턴하게 됩니다. 

이것도 처음에 이야기한 ICU API를 사용하기 때문에 링커로 -licucore를 넣어주셔야 합니다. 
XCode 3.1.2를 기준으로 하면
좌측의 "Groups & Files" > Targets > 프로젝트명" 에서 우클릭 한 다음 "Get Info"를 선택합니다. 
"build" 탭에서 쭉 내려보시면 "Linking > Other Linker Flags"라는 항목이 있습니다. 
여기에 -licucore를 지정해 주면 링커 설정이 완료됩니다. 

생각보다 쉽게 할 수 있도록 구현되어 있네요.. 
그럼 도움이 되었으면 합니다. 


 



Trackback 0 And Comment 6