我想通过输入字符串来过滤我的所有数据,听起来很简单。 这是我到目前为止所得到的:
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))));
}
如果我只是搜索一个单词,或者如果我们按照正确的顺序在单词之间搜索'*',这样可以正常工作。 但是我如何搜索多个单词并且单词的顺序无关紧要?
答案 0 :(得分:3)
您需要使用Positive Lookahead功能并使用输入的所有字词构建正则表达式字符串。这是一个简单的例子(让我们假设输入one two three
):
QRegExp re("^(?=.*one)(?=.*two)(?=.*three).*$");
qDebug() << re.exactMatch("two three one four"); // returns true