gpt4 book ai didi

c++ - 使用正则表达式添加到堆栈

转载 作者:搜寻专家 更新时间:2023-10-31 02:07:40 27 4
gpt4 key购买 nike

我正在学习正则表达式和 C++,我想制作一个后缀表达式。为此,我想像这样分隔我的字符串:

String : 56*((6+2)/(8-7)* 2^3)
List : 56 | * | ( | (| 6 | + | 2 | ) | / | ( ....

其实我有:

void Stack::findIT() {
std::string var = "56*((6+2)/(8-7)* 2^3)";

std::string str("56*((6+2)/(8-7)* 2^3)");
std::regex r("([0-9]*|[+*\\-\\/%]|[()])");
std::smatch m;
std::regex_search(str, m, r);
for(auto v: m) std::cout << v << std::endl;
}

我想吃药:std::stack_operators;std::stack _操作数;

为此,使用正则表达式提取字符串但是为什么当我使用这段代码时我得到的是空字符串?

最佳答案

使用 std::regex r("([0-9]*|[+*\\-\\/%]|[()])");,空字符串为匹配。

你可能想要:[0-9]+|[+*/%^()-]"

您还必须迭代搜索:

std::string str("56*((6+2)/(8-7)* 2^3)");
std::regex r("[0-9]+|[+*/%^()-]");
std::smatch m;
while (std::regex_search(str, m, r)) {
std::cout << m[0] << std::endl;
str = m.suffix();
}

Demo

关于c++ - 使用正则表达式添加到堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48321406/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com