Regex帮助,匹配产生额外的空间
Regex help, match produces extra spaces
我正在使用boost/regex.hpp
库。正则表达式用于匹配浮点数或任意数学运算符列表中的一个。后面的a
是一个占位符,因为当前构造正则表达式的代码在末尾留下了一个|
,我还没有修复它。我的正则表达式是:
(?:([-+]?[0-9]*.?[0-9]+(?:[eE][-+]?[0-9]+)?)|(s*sqrt((.+?))s*)|(s*exp((.+?))s*)|(^)|(s*log2((.+?))s*)|(s*log10((.+?))s*)|(s*neg((.+?))s*)|(s*floor((.+?))s*)|(s*log((.+?))s*)|(s*fact((.+?))s*)|(/)|([*])|([+])|([-])|a)
我的测试字符串是:
4.5 + 9.6e8 + sqrt(5)
结果匹配为:
4.5 + 9.6e8 + sqrt(5) 5
我不知道为什么拍摄之间有这么多空隙。
打印代码为
boost::regex reg(token);
boost::smatch m;
string s = input;
while (boost::regex_search(s, m, reg)) {
for (int i = 1; i < m.size(); ++i) cout << m[i] << " ";
s = m.suffix().str();
}
您有很多捕获括号,并且在每个捕获组之间打印一个空格。您的许多捕获组都是空的。也许您想重构正则表达式,只捕获您真正想要的内容。
相关文章:
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 命名空间中具有.h和.cpp文件的类
- 从父命名空间重载类型
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- 在命名空间中定义函数还是限定函数
- 需要帮助设置在C++中使用的Potrace
- 在指针的帮助下,文本文件中单词的频率
- C++:对不存在的命名空间使用命名空间指令
- 通过继承类使用来自不同命名空间的运算符
- 使用命名空间时出现多个定义错误
- 计算每个节点的树高,帮助我解释这个代码解决方案
- OpenGL相机和相机空间转型的困惑
- 如何在Qbutton的帮助下更改Q对话框的宽度
- CUDA内核和数学函数的显式命名空间
- 我是否可以在类似于 C# 的 C++ 中创建全局命名空间层次结构,以帮助开发人员使用我们的代码?
- Regex帮助,匹配产生额外的空间
- 请帮助我与c++命名空间
- c++命名空间新手需要帮助
- 如何在匿名命名空间中调用可变变量模板帮助器
- D&D 游戏的类、命名空间和继承帮助