Qt - 拆分并使用qlineEdit中的字符串作为regEx

时间:2014-01-06 19:22:35

标签: qt qstring qtcore qregexp

我想通过输入字符串来过滤我的所有数据,听起来很简单。 这是我到目前为止所得到的:

stringToSearch.replace( QRegExp(" "), "|" );

QRegExp regExp(stringToSearch,Qt::CaseInsensitive, QRegExp::Wildcard); 

model->removeRows(0,model->rowCount());
for(int row = 0; row < stringsInTable.filter(regExp).count(); row++)
{
    model->appendRow(new QStandardItem(QString(stringsInTable.filter(regExp).at(row))));
}

如果我只是搜索一个单词,或者如果我们按照正确的顺序在单词之间搜索'*',这样可以正常工作。 但是我如何搜索多个单词并且单词的顺序无关紧要?

1 个答案:

答案 0 :(得分:3)

您需要使用Positive Lookahead功能并使用输入的所有字词构建正则表达式字符串。这是一个简单的例子(让我们假设输入one two three):

QRegExp re("^(?=.*one)(?=.*two)(?=.*three).*$");
qDebug() << re.exactMatch("two three one four"); // returns true