본문 바로가기

Native/C++

pcre

    * by 지훈현서아빠
    * 2007/03/31 15:03
    * mcchae.egloos.com/5204071
    * 덧글수 : 3

PCRE는 (Perl Compatable Regular Expression)으로서 http://www.pcre.org 에서 소스와 문서를 다운받을 수 있다.
이미 이 라이브러리가 나온지는 꽤 된다. 아파치 그룹을 포함하여 nmap 까지 상당히 많은 프로젝트에서 이미
사용되고 있다는 것으로서 이 라이브라리의 정평이 이미 나 있었다.

이 PCRE와 관련되어서는 정규식을 사용하는 유틸리티부터 거슬러 올라가는데, 유닉스 명령을 처음 보기
시작하여 흥미를 느꼈던, "awk, sed, vi" 등의 명령을 사용하면서 어렴풋이 정규식(Regular Expression)이란 것의
중요함을 느끼기 시작하였고, 나중에 Perl 언어를 다루면서 정규식의 매력에 흠뻑 빠졌던 기억이 난다.
정규식의 내용 자체에 대해서는 차후에 기회가 있으면 따로 포스팅 하거나 이미 수없이 많은 참고 사이트가
있겠지만, 결국은 그것을 사용하는 방법은 거기에서 거기이다.

POSIX에서도 re_comp, re_exec 등의 정규식 관련 API가 존재하지만, perl처럼 확장된 정규식을 사용하는데는
어려움이 많이 있다. 결국 perl정규식이 가장 자유로운 문자열 매칭을 할 수 있는 정규식이라 할 수 있으며,
이 perl에 사용되는 정규식과 동일하게 C 라이브러리로 구성하여 놓은 것이 바로 위의 PCRE라 할 수 있다.

최근에 Win32 프로그램을 하는데 정규식이 필요하게 되었다. 즉, PCRE가 윈도우에서 지원하는가 하는 거였다.
이것 저것 구글에서 찾은 결과, 이미 포팅과 더불어 친절하게 정적, 동적 라이브러리 까지 빌드해 놓은 사이트가
있었다.

http://www.psyon.org/projects/pcre-win32/index.php
바로 이 사이트 이고,


이렇게 생겼으며, 최신 버전인 pcre-6.7-*.zip 을 다운받아 설치하면 된다.

테스트는 일단 Visual Studio 2005의 VC++, win32 console 프로그램으로 선택한 후,
pcredemo를 만들었고, 위에서 풀은 pcre-6.7-static.zip을 풀어 거기에 있는 pcre.h와 pcre.lib를 참조하였고
pcredemo.c를 위에서 pcre-6.7-src.zip에서 추출한 것을 가져다가 build를 하였다.

그러면 pcredemo.exe가 생기며 다음과 같이 명령을 주면 된다.
> pcredemo -g "곰\s*바우" "곰이놀이를가다. 곰바우를 만나 곰 바우가 되남? 곰 바우가 되나?"
라고 하면 결과가 나온다.




정규식의 활용을 간단히 맛보기로 소개를 하자면,

HTML안에서 "ING생명" , "ING{공백,개행,탭 등이 한개이상}생명" 이라는 TEXT내용이 나오는 것을 찾으려면,

">*ING\s*생명.*<"
이런 식으로 주면 된다.

'Native > C++' 카테고리의 다른 글

A C++ Barcode Library  (0) 2013.10.02
md5 checksum MD5  (0) 2013.10.02
Visual C++ 2005 map<string, string> problem  (0) 2013.10.02
CJpeglibExtension  (0) 2013.10.02
library 만들기  (0) 2013.10.02