http://blog.jinbo.net/zeniroy/?pid=41

2. 한글 추출

이 부분이 참 아스트랄 한데.. 한번 보자..

string jamo = "[\\x{3131}-\\x{318E}]";
string syllable = "[\\x{AC00}-\\x{D7A3}]";
string not_syllable = "[^\\x{AC00}-\\x{D7A3}]";

string paren = "\"";
string not_paren_all = "[^"+paren+"]*";

string const_str = paren + not_paren_all + syllable + not_paren_all + paren;
string const_str2 =
paren + not_paren_all + not_syllable + not_paren_all + paren;

일단 위의 4가지는 준비 단계에 해당하는 것이다.
자음모음은 unicode에서 0x3131 ~ 0x318E 까지 이다.
이를 string에 넣기 위해서는 꼭 \가 2개 들어가야 한다는 사실!!
안그러면 에러나요~;;;

음절은 0xAC00 ~ 0xD7A3 까지 이다.
paren과 not_paren_all은 우리가 프로그램에서 보통 string을 "로 묶어서
쓰기때문에 들어가 있는 것이다.

첫번째 const_str은 "...한글..." 과 match되는 regular expression이다
하지만 그렇지 않다는 거!!! regex에서만 그런지 아님 다른 곳에서도 그런지 모르겠지만..
이것은 한글이 아닌 것들만 쫙 골라내게 된다;;

그래서 내린 특단의 조치가 바로 const_str2이다
이것은 사실 "...한글 아닌 것..."과 match되어야 하지만..
바로 이것이 "... 한글..."과 match되는 것이 아닌가..
여기 저기 찾아보았지만 만족할 만한 대답을 보지 못했다..

혹 누가 아신다면 알려주세요..ㅜ.ㅜ


Retrieved from http://hyacinth.byus.net/moniwiki/wiki.php/C/C++/boost/regex/한글 추출
last modified 2009-01-12 14:12:44