在 cpp 中通过正则表达式拆分字符串 --特殊情况
split string by regex in cpp --special case
我想拆分这个表达式
A+ + B
通过中间的"+",以便我有最后的 A+ 和 B
请注意,A 后面的 + 是第一个令牌的一部分,我不想拆分它
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
#include <boost/algorithm/string/regex.hpp>
#include <vector>
using namespace std;
int main()
{
string expression="A+ + B";
vector <string> resultArray;
boost::algorithm::split_regex( resultArray, expression, boost::regex( " + " ));
for (int i=0; i<resultArray.size();i++){
cout <<resultArray[i]<< endl ;
}
return 0;
}
+
是一个正则表达式字符,你必须转义它。不确定它在 c++ 中是如何做的,但通常在其他语言中,它使用反斜杠 (\) 完成,就像这样+
,对于空格,您可以使用s
因此,假设这将是您的拆分正则表达式:
\s+\+\s+
它的意思是:任意数量的空格,然后是加号,然后是任意数量的空格。
+
需要用转义,而且
本身需要再次用
转义,因为这C++。 所以:
int main()
{
string expression="A+ + B";
vector <string> resultArray;
boost::regex rx(" \+ ");
boost::algorithm::split_regex( resultArray, expression, rx);
for (size_t i=0; i<resultArray.size();i++)
{
cout << "[" << i << "] : " << resultArray[i]<< endl ;
}
return 0;
}
输出:
jdibling@hurricane:~/dev/hacks$ ./hacks
[0] : A+
[1] : B
相关文章:
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 在不使用字符串库的情况下输入字符*
- 在 c++ 中连接字符串和整数,以便在 C++ 11 不支持计算机的情况下读取多个文件
- 如何在不知道对应关系的情况下在字符串中搜索字符并将其分配给另一个字符?
- 如何在不使用追加函数的情况下追加到字符串C++?
- 如果结构中的字符串比使用的 p/调用签名长或短,会发生什么情况?
- 在这种情况下,使用 string_view 是否会导致不必要的字符串复制?
- 如何在不进行任何其他修改的情况下"pretty print" C++的XML字符串?
- 在不使用内置库函数的情况下添加字符串,我做错了什么?
- 如何在没有外部库的情况下使用C++03约束执行基于正则表达式的字符串操作
- 有没有一种方法可以在不复制数据的情况下从string_view创建字符串流
- 当通过常量和不是字符串的最佳选择时,是否有任何情况?
- 如何在没有同步的情况下使用多个线程(2、4,8、16 个线程)在循环(10,100、1000 个周期)中打印字符串?
- 如何在没有映射的情况下在枚举和字符串之间进行转换?
- 如何在没有运算符>>的情况下从字符串流返回下一个令牌?
- 如果字符串在 C/C++ 中没有 NUL 字符(以防编译器允许它通过)会发生什么情况?
- 如何在不使用 STL 的情况下从函数反转字符串后返回字符串C++?
- 如何在不使用宽字符串的情况下创建目录C++?
- 如何在不迭代的情况下从string_view向量创建字符串向量?
- 在 C++ 中取消引用字符串时会发生什么情况