if( sscanf("<http://a.b.c:80/abc.htm>", "%50[^:/]://%2000[^/]/%s", protocol, host, path) == 3 ) {
printf ("protocol=%s, host=%s, path=%s\n", protocol, host, path);
}

[해석]

1. 아래 string 에서
<
http://a.b.c:80/abc.htm>

2. 아래 정규식은
%50[^:/]://%2000[^/]/%s

3. 다음과 같은 의미를 가진다.
%50 50개까지 허용함
[^:/] :/ 바로 앞까지..
:// 요거는 지나서
%2000 2000개까지 허용
[^/] / 바로 앞까지..
/ / 요거는 지나서
%s 그 다음 문자열..

4. 그 결과 printf 는 아래와 같이 나타남
protocol=http, host=a.b.c:80, path=abc.htm

출처는 http://mcchae.egloos.com/10685164

그동안 [^] 활용이나 방법을 잘 몰랐는데.. 공부함..

 

[C] sscanf 를 활용하여 파싱 코드를 좀 줄여보자구요~

휴우, 파이썬을 사용하다가 간만에 C 소스를 보다보니 이십년만에 C 표준 라이브러리에 있는sscanf 의 조금 더 고급스러운 기능을 사용해 보게 되네요.일단, 아래의 sccanf 를 한번 보시면,sscanf(buffer,"%50[^:/]://%2000[^/]/%s", protocol, host, path);무언가 %d, %s 등과 달리 그 뒤에 나오는 것이

mcchae.egloos.com