2016-05-17 131 views
-2

我想从输入字符串中获取一组命令。命令由像这样的“move50”的字符和值组成。 我有像“move90rotate50”输入字符串中的多个命令,我想要组“move90”和“rotate90”。为命令创建正则表达式

我想这正则表达式:

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

,但它会返回一个组。

感谢。

+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'; 
} 
+0

https://www.youtube.com/watch?v=DnQqYXK21pg –