Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Общие вопросы _ помогите с QRexExp

Автор: soullibra 19.10.2009, 21:09

пытаюсь разобраться с классом QRegExp
есть ли функция, которая возвращает true|false наподобии indexIn() ?
мне нужно просто проверять валидность строки регулярному выражению
чтото наподобии

if (QRegExp("^([0-9]{5,6}|VRB[0-9]{2,3})(G[0-9]{2})?(KMH|KT|MPS)([0-9]{3}V[0-9]{3})?$").indexIn(str)) != -1)
   return true;
} else {
   return false;
}

PS привык к php-му preg_match()

Автор: SABROG 19.10.2009, 21:20

Глянь в сторону http://doc.qt.nokia.com/latest/qregexpvalidator.html

Автор: BRE 19.10.2009, 21:33

bool QRegExp::exactMatch ( const QString & str ) const
int QString::indexOf ( const QRegExp & rx, int from = 0 ) const

Автор: soullibra 20.10.2009, 8:44

еще вопрос:
насколько я понял

QRegExp("^\\d").exactMatch(str)==true
QRegExp("\\d$").exactMatch(str)==true
QRegExp("\\d").exactMatch(str)==true

все три варианта одинаковы и равносильны
QRegExp("^\\d$").indexIn(str)!=-1

?

Автор: ViGOur 20.10.2009, 10:26

Нет, вот примерная интерпретация:

  1. от начала строки
  2. до конца строки
  3. весь текст
  4. от начала строки до конца строки

Автор: soullibra 20.10.2009, 17:35

Ну как я понял... exactMatch() дословно: точно совпадает, т.е.
QRegExp("\\d").exactMatch(str) это полное соответствие str выражению "\d"
или я чтото не так понял? вроде и тесты проводил :)
например
QRegExp("1").exactMatch("1") //true
QRegExp("1").exactMatch("11") //false
QRegExp("^1").indexIn("11") //0
QRegExp("^1$").indexIn("11") //-1

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)