說我有一個文本,表示爲std :: string,其中包含幾個不同的換行符,例如, \ r \ n,但也只是\ n甚至只是\ r。不同的換行符的正則表達式
我現在想通過用\ r \ n替換所有非\ r \ n換行符,即所有\ r和所有\ n換行符來統一它。
一個簡單的boost :: replace_all(text,「\ n」,「\ r \ n」);不會不幸地工作,因爲這也會取代\ 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"
這似乎工作,謝謝! – SampleTime
更好的模式是'\ r \ n?| \ n'。備選方案應該在不同地點進行匹配,作爲最佳做法。 –
@WiktorStribiżew:用什麼指標「更好」? 「替代品應該在不同地點匹配」是什麼意思? –