Russian Qt Forum

Qt => Общие вопросы => Тема начата: neosapient от Май 15, 2009, 14:44



Название: помогите составить правильное регулярное выражение
Отправлено: neosapient от Май 15, 2009, 14:44
Помогите составить регулярное выражение, чтобы получать числа командой QRegExp::cap
1) Есть строка, начинающаяся со слова find и содержащая много слов через пробел, вида
find #123456 argfaegf
Надо найти число, которое идет сразу после знака решетки, где то внутри строки

2) Есть строка, начинающаяся со слова find и содержащая много слов через пробел, вида
find '123456' argfaegf
Надо найти число, которое внутри одинарных кавычек, где то внутри строки


Название: Re: помогите составить правильное регулярное выражение
Отправлено: _OLEGator_ от Май 15, 2009, 20:37
По необходимости сначала проверить, есть ли слово find вначале, а получить число можно регулярным выражением:
(#\d+ |'\d+' )

1) Вернет строку "#123456 ", для которой надо обрезать 2 крайних символа;
2) Вернет строку "'123456' ", для которой надо обрезать 1 левый и 2 правых крайних символа;


Название: Re: помогите составить правильное регулярное выражение
Отправлено: Tonal от Май 18, 2009, 07:45
http://txt2re.com/


Название: Re: помогите составить правильное регулярное выражение
Отправлено: neosapient от Май 22, 2009, 14:27
Не понимаю, как это прикрутить. Метод indexIn() всё время возвращает -1
Код:
void QxPushButton::mousePressEvent(QMouseEvent * e){
int res;
if (e->buttons() & Qt::RightButton) {
QRegExp rxlen("#\d+ |'\d+'");
QString t = text();
int pos = rxlen.indexIn(t);   // <--  тут возвращается -1
if (pos > -1) {
QString value = rxlen.cap(0);
QApplication::clipboard()->setText(value);
}
    }
}

Как правильно написать ?


Название: Re: помогите составить правильное регулярное выражение
Отправлено: _OLEGator_ от Июнь 02, 2009, 22:12
Регулярное выражение - это (#\d+ |'\d+' ), включает в себя еще скобки!

А лучше почитай материал по регулярным выражениям...

И вообще в коде правильно писать так:
Код
C++ (Qt)
QRegExp rxlen("(#\\d+ |'\\d+')");


Название: Re: помогите составить правильное регулярное выражение
Отправлено: lit-uriy от Июнь 02, 2009, 22:17
и экранировать его не забываем. Всё-таки на С++ пишем.


Название: Re: помогите составить правильное регулярное выражение
Отправлено: _OLEGator_ от Июнь 02, 2009, 22:19
Ага, уже :)


Название: Re: помогите составить правильное регулярное выражение
Отправлено: neosapient от Июнь 11, 2009, 13:07
Спасибо, начал понемногу разбираться.  ;)