Как вставить формат str и не удалять совпадающее регулярное выражение во входной строке в boost :: regex_replace () в C ++? - PullRequest
0 голосов
/ 02 июня 2010

Я хочу поставить пробел между пунктуацией и другими словами в предложении. Но boost :: regex_replace () заменяет пунктуацию пробелом, и я хочу сохранить пунктуацию в предложении! например, в этом коде вывод должен быть «Привет. Привет»

regex e1("[.,]");
std::basic_string<char> str = "Hello.hi,";
std::basic_string<char> fmt = " ";
cout<<regex_replace(str, e1, fmt)<<endl;

Вы можете мне помочь?

1 Ответ

1 голос
/ 02 июня 2010

Вам необходимо использовать переменную замены в строке fmt. Если я правильно понимаю документацию, то при отсутствии поля флагов вы захотите использовать строку формата Boost-Extended .

На этом подъязыке вы используете $& для обозначения того, что было найдено, поэтому вы должны попробовать определить fmt как:

std::basic_string<char> fmt = " $& ";

Это должно изменить каждую пунктуацию на тот же символ, окруженный пробелами.

...