質問: "1+22x3-40/5="; regex pattern_1(R"((\d+)(x|/)(\d+))"); regex pattern_2(R"((\d+)(+|-)(\d+))"); } ``` こうした時に、コンパイルは通ります。 しかし、正規表現が1つ(pattern_1のみ)の場合はそのまま実行できるのですが、 正規表現を2つ(pattern_1とpattern_2)使おうとした場合に以下のようなエラーが出ます。 libc++abi.dylib: terminating with uncaught exception of type std::__1::regex_error: One of *?+{ was not preceded by a valid regular expression. 原因がまったくわかりません。 正規表現は2つ以上は使えないのでしょうか??
回答: ``` regex pattern_2(R"((\d+)(+|-)(\d+))"); ⇑ これ ``` `+`文字そのものにマッチさせたい場合は、`\+`のようにエスケープする必要があります。