Post List

2014년 12월 29일 월요일

regex_replace : 정규식으로 찾은 문자열 수정

regex_replace

정규식으로 찾은 문자열을 다른 문자열로 바꿔주는 기능이다. 찾은 문자열에서 괄호 ( ) 로 표시한 그룹을 $1 ~ 로 표현이 가능하다.

#include <regex>
#include <iostream>

using namespace std;

int main()
{
  string str("icysowrd@nate.com;   sjyun@warevally.com;;;    orange@warevalley.com");
  regex e("([[:w:]]+)@([[:w:]]+)\.com", regex_constants::icase);

  string fmt("$1 is on $2 ");
  cout << regex_replace(str, e, fmt);

  cin >> str;
}



regex 에서 사용한 regex_constants::icase 는 대소문자 구분을 무시하는 Flag 이다.

regex_replace에서도 다른 Flag 들이 사용 가능하다.
regex_constants::format_no_copy 는 Match 되지 않은 나머지 문자열들은 표시해주지 않는 다는 의미이며,
regex_constants::format_first_only 는 처음 Match 된 문자열만을 표시해준다.

기타 다른 Flag 들은 MDSN 이나 Boost 홈페이지를 참조하면 자세히 나와 있다.

댓글 없음:

댓글 쓰기