c++ - 如何使用正则表达式删除 std::wstring 中特定短语的所有实例?

标签 c++ regex string replace std

我试图遵循这个答案:https://stackoverflow.com/a/32435076/5484426 ,但对于 std::wstring。到目前为止,我有这个:

std::wstring str = L"hello hi hello hi hello hi";
std::wregex remove = L"hi";

现在我想这样做:regex_replace(str,remove,""); 不过,它看起来不像 regex_replace 适用于 wstring。如何删除此字符串的所有实例?

最佳答案

std::regex_replace 当然适用于 std::wstring,以及 std::basic_string 的所有其他特化。但是,替换格式字符串的字符类型必须与正则表达式和输入字符串的字符类型相匹配。这意味着您需要一个广泛的替换格式字符串:

std::regex_replace(str, remove, L"");

除此之外,采用 const wchar_t*std::wregex 的构造函数是显式的,因此您的复制初始化将不起作用。此外,std::regex_replace 的重载会返回一个完成替换的新字符串,而不是就地替换,这一点需要注意。

这是一个 example考虑到这些要点:

std::wstring str = L"hello hi hello hi hello hi";
std::wregex remove{L"hi"};   

str = std::regex_replace(str, remove, L"");

关于c++ - 如何使用正则表达式删除 std::wstring 中特定短语的所有实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34080899/

相关文章:

c++ - 数组溢出 C++(在 arr[0])?

c++ - .txt 文件中的表格转换为 C++ 中的 vector

正则表达式 匹配行并保存为第一行

python正则表达式查找并替换具有特定属性值的html标签

arrays - 在 node.js 中查找数组内字符串的最佳方法是什么?

c++ - 我如何确定模板参数参数是否是模板内结构中另一个类的实例? C++

c++ - 跨 DLL 边界使用单例

html - 如何使用正则表达式在 Matlab 中解析 HTML 标签?

c - 从字符串元素中取值并将取值与两位数相加

java - 如何在java中旋转一定数量的单词