정규식으로 이스케이프 문자열을 처리하는 방법 알려주세요~^^

jic5760의 이미지

안녕하세요.
C++ std::regex_replace을 이용해서

"\n" 이 문자열(앞에 \n은 이스케이프문자가 아닙니다. 2글자의 char입니다.)을 개행문자로 바꾸고 싶습니다.
단 \\n 이렇게 이스케이프 문자가 먼저 처리된것에 한해서는 처리하지 않길 원합니다..

간단한거 같은데 잘 안되네요...ㅠㅠ

[^\\]\\n 이렇게 하면 abcd\n -> d\n 가 인식되네요...

특정 패턴을 먼저 제외하고 처리하는 방법 있나요?

raymundo의 이미지

그 'd' 는 치환할 때 다시 써주면 되죠.
패턴을 ([^\\])\\n 으로 하고, 치환 문자열은 $1\n 으로 해보시죠.

  string s = "first\\nsecond\\nthird\\\\nline\\n";
  cout << s << endl;
  regex e("([^\\\\])\\\\n");
  cout << regex_replace(s, e, "$1\n") << endl;

좋은 하루 되세요!