C 코드에서 정규표현식은 어떻게 처리하죠?

익명 사용자의 이미지

특정 입력이 정규표현식으로 이루어져서 들어올 때 그 정규표현식을 처리
하기 위해서 regcomp(), regexec() 등의 함수를 사용해야 될 것 같은데
요. 혹시 어떻게 사용하는지, 아니면 이들 함수를 사용한 소스코드 예제
가 있으면 가르쳐 주세요... 부탁드립니다.

소스코드 예제가 있으면 메일로 보내주세요.. ^^

익명 사용자의 이미지

http//www.ezdoum.com/stories.php?story=02/05/19/5810629

한글지원이 되는 hg_regexp
http//kldp.net/forum/forum.php?forum_id=138

익명 사용자의 이미지

gcc가 아닌 경우나 C++ 사용자라면 Boost Library의 Regex++ 을 추천합니다.

GNU Regex 와 사용법이 유사하면서도 훨씬 강력하고 다양한 기능을 제공합니다.

Regex++ 문서 링크
http//boost.org/libs/regex/index.htm

다음은 신용카드 번호를 인식하는 간단한 예제 프로그램입니다.

----------------------------------------------------------------------------------

/*
* LOCATION see http//www.boost.org for most recent version.
* FILE credit_card_example.cpp
* VERSION see
* DESCRIPTION Credit card number formatting code.
*/

#include
#include
#include

using namespace std;
using namespace boost;

bool validate_card_format(const string& s)
{
static const regex e("(\\d{4}[- ]){3}\\d{4}");
return regex_match(s, e);
}

const regex e("\\A(\\d{3,4})[- ]?(\\d{4})[- ]?(\\d{4})[- ]?(\\d{4})\\z");
const string machine_format("\\1\\2\\3\\4");
const string human_format("\\1-\\2-\\3-\\4");

string machine_readable_card_number(const string& s)
{
return regex_merge(s, e, machine_format, match_default | format_sed);
}

string human_readable_card_number(const string& s)
{
return regex_merge(s, e, human_format, match_default | format_sed);
}

int main()
{
string s[4] = { "0000111122223333", "0000 1111 2222 3333",
"0000-1111-2222-3333", "000-1111-2222-3333", };
int i;
for(i = 0; i < 4; ++i)
cout << "validate_card_format(\"" << s[i] << "\") returned "
<< validate_card_format(s[i]) << endl;

for(i = 0; i < 4; ++i)
cout << "machine_readable_card_number(\"" << s[i] << "\") returned "
<< machine_readable_card_number(s[i]) << endl;

for(i = 0; i < 4; ++i)
cout << "human_readable_card_number(\"" << s[i] << "\") returned "
<< human_readable_card_number(s[i]) << endl;

return 0;
}

익명 사용자의 이미지

감사^^