我想使用
regex_replace()
删除输入字符串中的空行;然而,正则表达式 "^\n"
在我的代码中不起作用,尽管当我在 RegExr 上测试它时它可以工作。这是我的代码:
std::string s = "filler text\n\nfiller text";
std::regex reg("^\n");
std::cout << s;
s = std::regex_replace(s, reg, "");
cout << '\n' << s;
输出:
filler text
filler text
filler text
filler text
我是否应该只用一个换行符替换任何两个换行符?然后我必须循环直到找不到匹配项。为什么这个方法看似没有任何问题却不起作用?
我不会处理“行尾”,而是用单个换行符替换多个连续的换行符:
#include <iostream>
#include <string>
#include <regex>
int main(int argc, char **argv) {
std::string s = "filler text\n\nfiller text";
std::regex reg("\n+");
std::cout << "Before:\n";
std::cout << s << "\nAfter:\n";
s = std::regex_replace(s, reg, "\n");
std::cout << '\n' << s << '\n';
}