c++ - 不同换行符的正则表达式

标签 c++ regex c++11

假设我有一个文本,表示为 std::string,其中包含几个不同的换行符,例如\r\n 但也只是\n 甚至只是\r。

我现在想通过替换所有非\r\n 换行符来统一这一点,即所有\r 和所有\n 换行符替换为\r\n。

一个简单的 boost::replace_all(text, "\n", "\r\n");不幸的是,它不起作用,因为这也会替换已经有效的\r\n 中的\n。

我认为 std::regex 应该是处理这个问题的好方法......但是我应该如何在正则表达式中表达它?这是一些代码:

#include <iostream>
#include <string>
#include <regex>

int main()
{
    std::string text = "a\rb\nc\r\nd\n";
    std::regex reg(""); // What to put here?
    text = std::regex_replace(text, reg, "\r\n");
    std::cout << text;
}

最后的文本应该是 "aaa\r\nbbb\r\nccc\r\nddd\r\n"

最佳答案

std::regex_replace(text, reg, "\r\n|\r|\n");

应该匹配。

更多信息在这里:

Match linebreaks - \n or \r\n?

关于c++ - 不同换行符的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43822587/

相关文章:

C++ 模板 : intiantiating a variable out of a particular integer (as type)

c++ - 奇变量赋值

c++ - 如何修复错误 : ‘::max_align_t’ ?

c++ - 初始化其构造函数采用引用的基类

javascript - 如何使用正则表达式通过 jQuery 按 ID 选择元素?

regex - "sed"特殊字符处理

c++ - C++11 中的函数返回函数指针

c++ - Arduino写入屏幕的速度

android - 将 Mat 对象从 android java 传递到 native cpp 部分

python - 正则表达式 : how to match a string containing "\n" (newline)?