为命令创建正则表达式

时间:2016-05-17 20:13:09

标签: c++ regex

我想从输入字符串中获取一组命令。命令由字符和值组成,如此" move50"。 我在输入字符串中有多个命令,如" move90rotate50"我想要小组" move90"和" rotate90"。

我试过这个正则表达式:

std::regex regex("([a - z] + [0 - 9] + )");

但会返回一组。

感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用

[a-zA-Z]+\d+

请参阅regex demo。要在C ++中定义它,请使用像R"([a-zA-Z]+\d+)"这样的原始字符串文字。

要获取所有匹配项,请使用std::sregex_iterator()。请参阅IDEONE demo

std::regex r(R"([a-zA-Z]+\d+)");
std::string s = "move90rotate50";
for(std::sregex_iterator i = std::sregex_iterator(s.begin(), s.end(), r);
    i != std::sregex_iterator();
    ++i)
{
    std::smatch m = *i;
    std::cout << "Match value: " << m.str() << '\n';
}