我有以下函数,它应该给我来自正则表达式的匹配字符串:
QString selectByPattern(QString const &oValue, QString const &oPattern, bool bRegularExpression) const
{
QString s;
QRegExp regex;
// default
regex.setPatternSyntax(QRegExp::RegExp);
regex.setPattern(oPattern);
int i = oValue.indexOf(regex);
int l = regex.matchedLength();
if(i == -1 || l < 1)
return s;
s = oValue.mid(i, l);
return s;
}
我使用字符串*VALUE*
作为输入来测试它。现在我得到以下结果:
oPattern = "[A-Z]"
Output = "V"
哪个是对的。对于这种模式,它给了我第一个大写字符和长度 1。
但是当我使用这个时:
oPattern = "[A-Z]*"
Output = ""
我不明白为什么。返回的索引是0
,长度也是0
。首先,索引当然是错误的,因为它应该是1
. 然后我不明白0
长度的含义。根据文档(http://qt-project.org/doc/qt-4.8/qregexp.html#pattern)要么存在匹配,则索引为正值,在这种情况下,我希望matchedLength()
应该还返回一些值`> 0`。
我在这里误解了什么,或者这是 Qt 5.2.1 中的问题?