gpt4 book ai didi

c++ - 如何从字符串中提取 token ?

转载 作者:行者123 更新时间:2023-12-01 14:51:36 27 4
gpt4 key购买 nike

编辑:有人可以添加正则表达式解决方案吗?我正在寻找以下正则表达式:

[\(\)!*-+^]
我有一个函数,可以根据我在正文中声明的特殊字符从文本中提取 token 。
该函数有两个问题:
1)不打印特殊字符。
2)当两个特殊字符相邻时输出错误
因此,我进行了更改,从而解决了问题1(从一些测试结果中可以看出)
但是没有解决第二个问题吗?
注意:我使用的是C++ 11标准,而不是希望使用boost
示例:给定: a+(b*c)我期望: a,+,(,b,*,c,)给定: a+b我期望: a,+,b给定: ab+我期望: ab,+给定: a b+我期望: a b,+

最佳答案

这是一个正则表达式解决方案,应解析所需的 token :

void find(std::string str)
{
static const std::regex r(R"(\+|\^|-|\*|!|\(|\)|([\w|\s]+))");
std::copy( std::sregex_token_iterator(str.begin(), str.end(), r, 0),
std::sregex_token_iterator(),
std::ostream_iterator<std::string>(std::cout, "\n"));
}
这是 demo
这是一个 explanation
请注意,如果要进行通用分析,这不是一个好主意。正则表达式很快就会变得笨拙(如果还没有的话),并且有很多更好的工具可为您完成此操作。

关于c++ - 如何从字符串中提取 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63284970/

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