C ++ std::regex
не поддерживает классы свойств Unicode, такие как \p{Hangul}
, но вы можете использовать эквивалентный класс символов [\u1100-\u11FF\u302E\u302F\u3131-\u318E\u3200-\u321E\u3260-\u327E\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]
, см. эту ссылку .
Кроме того, \R
также не поддерживается. Возможно, вы просто используете \r?\n
для соответствия с окончаниями строк в стиле Windows / Linux или (?:\r\n?|\n)
для поддержки окончаний строк в MacOS.
Далее, если вы сопоставляете и используете корейский символ, при замене вам нужно захватить его в группу захвата и использовать обратную ссылку на группу в шаблоне замены.
Итак, вы можете использовать
([\u1100-\u11FF\u302E\u302F\u3131-\u318E\u3200-\u321E\u3260-\u327E\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC])(?:\r\n?|\n)
Заменить на $1
, чтобы вернуть корейский символ в полученную строку.
См. Демонстрационную версию regex онлайн .