在C ++中将捕获的组与正则表达式一起使用

时间:2018-07-23 16:39:44

标签: c++ regex

我正在尝试使用带有正则表达式的组。

这是我的代码:

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”)。

谢谢

1 个答案:

答案 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的“示例”部分。