regex_search尝试匹配包含'['的字符串

时间:2018-02-06 16:51:24

标签: regex c++14

相对较新的正则表达式,我无法弄清楚正确的语法。我试图匹配一个字符串与以下模式:String [string]!='string'。我想把它分成三个匹配,如下所示:

  1. String [string] //可以包含数字
  2. != //运算符,也可以是:=,>和<或这些的组合
  3. 'string'//可以包含_和数字
  4. 到目前为止,我已设法将字符串与以下模式匹配:string ='string'。使用此代码:

    const string strExpression = "TypeValue!='Set_Site'";
    regex regex("([a-zA-Z0-9]+)([=><!]+)(['a-zA-Z0-9_]+)");
    smatch match;
    if (regex_search(strExpression.begin(), strExpression.end(), match, regex)) 
    {
        string indicator(match[1]);
        string op(match[2]);
        string value(match[3]);
    }
    

    然而,当我尝试在正则表达式语法中添加'['和']'时,我没有得到任何匹配。我修改了这样的代码:

    const string strExpression = "Type[Value]!='Set_Site'";
    regex regex("([]a-zA-Z0-9[]+)([=><!]+)(['a-zA-Z0-9_]+)");
    smatch match;
    if (regex_search(strExpression.begin(), strExpression.end(), match, regex)) 
    {
        string indicator(match[1]);
        string op(match[2]);
        string value(match[3]);
    }
    

    根据我正在阅读的文档,右方括号(']')将失去其特殊含义(终止括号表达式),如果它首先出现在列表中,则表示自己在括号表达式中。对于左方括号('['),它表示它将在括号表达式中失去其特殊含义。所以遵循这个规则和定义,我无法确定为什么我没有得到任何匹配

    有人可以给我一些指导我做错了吗?

    谢谢。

0 个答案:

没有答案