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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Составить регулярное выражение  (Прочитано 4142 раз)
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« : Декабрь 10, 2009, 15:40 »

Есть такие строки:
Цитировать
STRT.M                          1018.00: Начальная глубина
Т.е. какая-то мнемоника, куча пробелов(могут табы быть), потом число, затем двоеточие и через пробел комментарий.
А чтобы получить мне эти значения в QStringList - надо вызвать QRegExp::capturedTexts()?
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
uriel
Гость
« Ответ #1 : Декабрь 10, 2009, 16:41 »

Можно как-нибудь так: ^(\S*)\s*([0-9.]*): (.*)$
Только QRegExp::capturedTexts() вернёт по 0-му индексу всё совпавшее выражение целиком, а конкретные группы будут в 1-ом, 2-ом и 3-ем элементах.
Записан
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #2 : Декабрь 10, 2009, 16:54 »

Пишет так:
Цитировать
mainwindow.cpp:61: warning: unknown escape sequence '\S'
mainwindow.cpp:61: warning: unknown escape sequence '\s'
А без рег. выражений думаю слишком трудоемко будет...
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
Alp
Гость
« Ответ #3 : Декабрь 10, 2009, 16:58 »

Пишет так:
Цитировать
mainwindow.cpp:61: warning: unknown escape sequence '\S'
mainwindow.cpp:61: warning: unknown escape sequence '\s'
А без рег. выражений думаю слишком трудоемко будет...
На эти ворнинги можно забить.
Записан
Rcus
Гость
« Ответ #4 : Декабрь 10, 2009, 17:00 »

Пишет так:
Цитировать
mainwindow.cpp:61: warning: unknown escape sequence '\S'
mainwindow.cpp:61: warning: unknown escape sequence '\s'
А без рег. выражений думаю слишком трудоемко будет...
Цитата: Assistant
Note: The C++ compiler transforms backslashes in strings. To include a \ in a regexp, enter it twice, i.e. \\. To match the backslash character itself, enter it four times, i.e. \\\\.
Записан
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #5 : Декабрь 10, 2009, 17:01 »

Вроде придумал вариант:
Читаю строку, убираю все пробелы и выделяю нужное Улыбающийся
Т.е. я знаю, что после M будет идти число до двоеточия и т.д.
Но кто предложит через регулярные выражения - буду рад заюзать Подмигивающий
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
uriel
Гость
« Ответ #6 : Декабрь 10, 2009, 21:49 »

Просто я Вам написал регулярку, как она есть. А если это нужно запихнуть в код на C++, то следует чуть-чуть её преобразовать: "^(\\S*)\\s*([0-9.]*): (.*)$".
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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