Russian Qt Forum
Ноябрь 05, 2024, 22:12 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Регулярное выражение  (Прочитано 1951 раз)
aliks-os
Гость
« : Апрель 08, 2011, 10:44 »

Я никогда не работал с регулярными выражениями, помогите пожалуйста.

Имеется к примеру вот такая строка
Код:
CREATE DEFINER = 'sa'@'%'
PROCEDURE kadry_test.procedure2()
BEGIN

END

Мне необходимо выделить из нее: kadry_test.procedure2(),
т.е. слово которое следует после слова PROCEDURE и заканчивается скобкой

Помогите пожалуйста люди добрые
Записан
madRoger
Гость
« Ответ #1 : Апрель 08, 2011, 12:43 »

Можно попробовать так:

QRegExp rx("PROCEDURE ([0-9A-Za-z._]{1,}\\(\\))");
результат будет в rx.cap(1)
Записан
aliks-os
Гость
« Ответ #2 : Апрель 08, 2011, 13:55 »

Спасибо, но уже извратился и написал без рег.выражения, может кому и пригодиться
Код:
            QString tmpTxt;   //Текст который разбираем
            QString tmp;
            if (mode_ == PROC) tmp = "PROCEDURE ";
            if (mode_ == FUNC) tmp = "FUNCTION ";
            if (mode_ == TRG)  tmp = "TRIGGER ";
            QString procName_ = "";  //То что получаем на в результате
            int st = tmpTxt.indexOf(tmp,0,Qt::CaseInsensitive)+tmp.length();
            while (st<tmpTxt.length()) {
                if ((tmpTxt[st].isSpace() || !tmpTxt[st].isPrint()) && !procName_.isEmpty() )
                    break;

                if (!tmpTxt[st].isSpace() && tmpTxt[st].isPrint() && tmpTxt[st]!='(' && tmpTxt[st]!=')')
                    if (tmpTxt[st].isPrint()) {
                        procName_ += tmpTxt[st];
                    }
                ++st;
            }
« Последнее редактирование: Апрель 08, 2011, 14:06 от aliks-os » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.048 секунд. Запросов: 21.