Qt中的正则表达式(QRegExp)[错误的重复语法?]

时间:2015-11-30 09:16:47

标签: regex qt

我在下面写了代码

QString patternStr = "\\{\\\\@\\\\.+?\\\\.+?\\\\\\}";
QRegExp rx(patternStr); 
QString content = "{\@\Bob\96\} {\@\Andy\1001484\} nice to see u";
bool match = rx.exactMatch(content);
if (match)
{
   qDebug()<<"match";
}
else
{
   qDebug()<<"not match "<<rx.errorString();
}

但得到错误&#34;错误的重复语法&#34;,有人可以提供一些帮助吗?谢谢!

1 个答案:

答案 0 :(得分:0)

请注意,Qt中没有延迟量词,Qt正则表达式引擎无法正确解析+?子模式。

因此,我建议在模式中使用否定字符类 [^\\]

[{]\\\\@\\\\[^\\\\]+\\\\[^\\\\]+\\\\[}]

我将{}括在一个字符类中,这样您就不必转义其中任何一个。