を構築することができないのですhttps://regex101.com/r/gD2eN7/1なぜ私はこの正規表現を書いたこの正規表現
しかし、私はC++私は、ランタイムエラーを取得し、それを構築しようとします。 temp2.exeで0x7714C52Fで
未処理の例外:マイクロソフトC++の例外:メモリ位置0x003BF2ECで
のstd :: regex_error。
const auto input = "if (KnR)\n\tfoo();\nif (spaces) {\n foo();\n}\nif (allman)\n{\n\tfoo();\n}\nif (horstmann)\n{\tfoo();\n}\nif (pico)\n{\tfoo(); }\nif (whitesmiths)\n\t{\n\tfoo();\n\t}"s;
cout << input << endl;
cout << regex_replace(input, regex("(.+?)\\s*{?\\s*(.+?;)\\s*}?\\s*"), "$1 {\n\t$2\n}\n") << endl;
私はC++がサポートされていない機能を使用していますか?
あなたの正規表現には "生の文字列リテラル"を使うことをお勧めします。これはあなたを "エスケープなもの"から守り、コードを読みやすくします。また、単にリンクを提供するのではなく、コードやエラーなどを直接質問に含めてください。リンクが古くなって消滅し、患者(無料)のレビュー担当者に余計な障壁(多くの作業)が導入されます。私たちは私たちがしなければならないよりも頑張ってはいけません。 –
C++ Shellはエラーを起こしません(http://cpp.sh/7bue)。 –
中括弧をエスケープする: 'regex_replace(input、regex(" + ")\\ s * \\ {?\\ s *(?+?))\\ s * \\}?\\ s * )、 "$ 1 {\ n \ t $ 2 \ n} \ n") ' - http://ideone.com/jlH6QS –