私はstd :: stringで表されるテキストを持っています、これはいくつかの異なる改行を含んでいます。 \ r \ nだけでなく、\ nまたは\ rだけでも使用できます。異なる改行のための正規表現
ここで、すべての\ r \ n改行、つまりすべての\ rとすべての\ n改行を\ r \ nに置き換えて、これを統一したいと思います。
単純なboost :: replace_all(テキスト、 "\ n"、 "\ r \ n");それはすでに有効な\ 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;
}
テキストが末尾にちょうど「\n
」を入れ替えるには改行のいずれかの種類の"aaa\r\nbbb\r\nccc\r\nddd\r\n"
これはうまくいくようです。 – SampleTime
より良いパターンは '\ r \ n?| \ n'です。代替案は、ベストプラクティスとして異なる場所でマッチングする必要があります。 –
@WiktorStribiżew:どのメトリックで「より良い」? 「代替案は異なる場所で一致するはず」とはどういう意味ですか? –