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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Все тотже QRegExp  (Прочитано 4469 раз)
zodiac
Гость
« : Сентябрь 21, 2007, 13:13 »

qqq ="ааа [345.56] sdads [123.45] dfsd [565.56]
Есть код:
QRegExp rx("\\[(.*)\\]");
int pos = rx.indexIn(str);
if (pos > -1) {
   return rx.cap(1);
}
Но почему-то он возвращает только так: "345.56] sdads [123.45] dfsd [565.56", а мне нужно только число в [].
т.е. например: 345,56, 123,45.....
Записан
Tonal
Гость
« Ответ #1 : Сентябрь 21, 2007, 16:44 »

QRegExp rx("\\[([^\]]*)\\]");
Или можно явно перечислить допустимые символы которые ты ожидаешь встретить.
Вот для чисел с точкой:
QRegExp rx("\\[([\d.]*)\\]");
Записан
zodiac
Гость
« Ответ #2 : Сентябрь 21, 2007, 17:02 »

Спасибо. rx.cap(1) возвращает значение из первых скобок, но rx.cap(2) не возвращает ничего. Как тогда брать значение из вторых...n-ых скобок?
Записан
Tonal
Гость
« Ответ #3 : Сентябрь 21, 2007, 17:15 »

Открой в ассистенте  QRegExp::indexIn
В примере ++count замени на rx.cap(1)
Записан
zodiac
Гость
« Ответ #4 : Сентябрь 21, 2007, 17:26 »

Что-то не понял на что заменить и что именно :/

str = "qwerty [24.453] qwer: [324.12] rewq: [212.12]";
QRegExp rx("\\[([\\d.]*)\\]");
int pos = rx.indexIn(str);
if (pos > -1) {
   return rx.cap(1);
}
как быть в данном случае?
   
Записан
zodiac
Гость
« Ответ #5 : Сентябрь 21, 2007, 17:27 »

Все, мысль понял. Реализовал почти Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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