2014-01-06 6 views
0

문자열을 입력하여 모든 데이터를 필터링하고 싶습니다. 간단합니다. 이것은 내가 지금까지 무엇을 가지고 있습니다 :Qt - lineExtit의 문자열을 RegExp로 분할하여 사용하십시오.

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)))); 
} 

내가 함께 검색하면 그냥 하나 개의 단어를 검색 할 경우 또는이 잘 작동 '*'단어 사이에 그들은이 올바른 순서로 온다면. 하지만 어떻게 여러 단어를 검색 할 수 있으며 단어의 순서는 중요하지 않아야합니까?

답변

3

Positive Lookahead 기능을 사용하고 입력 한 모든 단어를 사용하여 regexp 문자열을 작성해야합니다. 다음은 간단한 예입니다 (입력을 one two three으로 가정).

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