私は文字列の形が" \"one\":\"1\", \"two\":2, \"three\":3, \"two\":22 "
です。文字列"two":
の後に来るすべての値を抽出しようとしています。つまり、上のケースでは2
と22
を抽出します。ここでregex:文字列とコロンの後にintを抽出する
が私の仕事は今のところです:
#include <iostream>
#include <string>
#include <regex>
int main()
{
const std::string str = " \"one\":\"1\", \"two\": 2, \"three\":3, \"two\":22 ";
std::regex rgx("\"two\":([0-9]*)");
std::smatch match;
std::regex_search(str.begin(), str.end(), match, rgx);
std::cout << "match[0] = " << match[0] << '\n';
}
これは出力"two"
を与えるので、私の表現rgx
は間違っています。私は使用する必要がある正しい形式は何ですか?
編集:コロンとその右に来るものの間に空白はありません。
まず: 'RGX( "\" 2 \ ":([0-9] *)")'これはあなたが持っている空白を見つけることができません「2:」と「2」の間にある。 – DimChtz
@DimChtzありがとう、それは私の一部のエラーだった - 空白ではないと思う。 – N08
これを試してみてください: 'std :: regex rgx(" \ "two \" :(。?) ");'残念ながら、今はテストできません。 – DimChtz