Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Astrologer от Октябрь 21, 2010, 14:36



Название: QRegExp совпадение по OR или AND
Отправлено: Astrologer от Октябрь 21, 2010, 14:36
Всем привет. Только начал знакомиться с RegExp и стоит следующая задача. Скажем есть следующие строки:

"SELECT * FROM baseTable where (
ALIAS = 'ddd' AND
)"

"SELECT * FROM baseTable where (
ALIAS = 'ddd' OR
)"

"SELECT * FROM baseTable where (
ALIAS is null
)"

"SELECT * FROM baseTable where (
base like '%one%' AND ALIAS is null
)"

Вопрос - как будет выглядеть RegExp чтобы найти AND или OR с конца строки не трогая поля? Заранее спасибо.

Что-то вроде  - найти первое совпадение and или or c конца строки не далее символа ' или слова null. Как это будет выглядеть в регулярном выражении?


Название: Re: QRegExp совпадение по OR или AND
Отправлено: shirushizo от Октябрь 21, 2010, 17:48
Найти первое совпадение and или or c конца строки вроде так "( AND | OR)$"
А чтобы до null и ' - есть костыль: QString::split(QRegexp("( null |')",Qt::CaseInsensitive))  и ищем только в последнем элементе полученого QStringList'а...

П.с: не тестил (враги сожгли диск с последним С++), в регулярных выражениях несилен. Подойдет как временный вариант (быдлокодером не называть и больно не бить).


Название: Re: QRegExp совпадение по OR или AND
Отправлено: trot от Октябрь 21, 2010, 18:58
(OR|AND)[\s]*(null[\s]*'?)?$