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

标签 c++ regex string split

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

[\(\)!*-+^]
我有一个函数,可以根据我在正文中声明的特殊字符从文本中提取 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/

相关文章:

iphone - Objective C 将 int 转换为 NSString (iPhone)

string - 在 Smalltalk 中,如何从数组中选择字符串和整数

c# - C#中的空字符串大小

c++ - 关于 Xcode4 和 C++

c++ - isnan 无法与 `-Ofast` 标志一起正常工作

Python:帮助制作正则表达式

Java 正则表达式元字符

c++ - 我无法理解一些 C++ 模板代码

c++ - 模板约束是否可用于变量模板?

php - 当两者都被触发时,正则表达式多重前瞻不起作用