相对较新的正则表达式,我无法弄清楚正确的语法。我试图匹配一个字符串与以下模式:String [string]!='string'。我想把它分成三个匹配,如下所示:
到目前为止,我已设法将字符串与以下模式匹配: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]);
}
根据我正在阅读的文档,右方括号(']')将失去其特殊含义(终止括号表达式),如果它首先出现在列表中,则表示自己在括号表达式中。对于左方括号('['),它表示它将在括号表达式中失去其特殊含义。所以遵循这个规则和定义,我无法确定为什么我没有得到任何匹配
有人可以给我一些指导我做错了吗?
谢谢。