在 cpp 中通过正则表达式拆分字符串 --特殊情况

split string by regex in cpp --special case

本文关键字:字符串 情况 拆分 正则表达式 cpp      更新时间:2023-10-16

我想拆分这个表达式

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
相关文章: