RegEx 替换 C++ 中的空行

问题描述 投票:0回答:1

我想使用

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

我是否应该只用一个换行符替换任何两个换行符?然后我必须循环直到找不到匹配项。为什么这个方法看似没有任何问题却不起作用?

c++ regex c++17 regexp-replace
1个回答
0
投票

我不会处理“行尾”,而是用单个换行符替换多个连续的换行符:

#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';
}
© www.soinside.com 2019 - 2024. All rights reserved.