我正在尝试使用带有正则表达式的组。
这是我的代码:
std::regex twoWordsCommand{"([a-z]+)\s(\w+)(['('][-]?[0-9]+(.[0-9]+)?[')'])"};
std::regex_match ("push int32(4242)", twoWordsCommand);
以下代码可以正常工作。使用此正则表达式,我创建了3个组。
组应该像这样:
group 1 = push
group 2 = int32
group 3 = (4242)
现在,我该如何使用这些组? 假设我想将group1中的单词转换为字符串,这样我就可以对字符串进行“ push”操作。我该怎么办?
就像,我该怎么办:
myFunction(group1);
myFunction是一个函数,它将对group1内的内容进行某些处理(在本例中为“ push”)。
谢谢
答案 0 :(得分:0)
首先,您必须通过转义反斜杠来修复正则表达式:
std::regex twoWordsCommand{"([a-z]+)\\s(\\w+)(['('][-]?[0-9]+(.[0-9]+)?[')'])"};
您应该创建std::match_results对象之一并将其传递给std::regex_match
:
std::cmatch match;
std::regex_match("push int32(4242)", match, twoWordsCommand);
然后您将可以访问匹配的组:
std::cout << match[1].str() << std::endl;
上面的代码将输出“ push”。有关更多示例,请参见std::regex_match reference page的“示例”部分。