Russian Qt Forum

Qt => Общие вопросы => Тема начата: kibsoft от Декабрь 10, 2009, 15:40



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


Название: Re: Составить регулярное выражение
Отправлено: uriel от Декабрь 10, 2009, 16:41
Можно как-нибудь так: ^(\S*)\s*([0-9.]*): (.*)$
Только QRegExp::capturedTexts() вернёт по 0-му индексу всё совпавшее выражение целиком, а конкретные группы будут в 1-ом, 2-ом и 3-ем элементах.


Название: Re: Составить регулярное выражение
Отправлено: kibsoft от Декабрь 10, 2009, 16:54
Пишет так:
Цитировать
mainwindow.cpp:61: warning: unknown escape sequence '\S'
mainwindow.cpp:61: warning: unknown escape sequence '\s'
А без рег. выражений думаю слишком трудоемко будет...


Название: Re: Составить регулярное выражение
Отправлено: Alp от Декабрь 10, 2009, 16:58
Пишет так:
Цитировать
mainwindow.cpp:61: warning: unknown escape sequence '\S'
mainwindow.cpp:61: warning: unknown escape sequence '\s'
А без рег. выражений думаю слишком трудоемко будет...
На эти ворнинги можно забить.


Название: Re: Составить регулярное выражение
Отправлено: Rcus от Декабрь 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. \\\\.


Название: Re: Составить регулярное выражение
Отправлено: kibsoft от Декабрь 10, 2009, 17:01
Вроде придумал вариант:
Читаю строку, убираю все пробелы и выделяю нужное :)
Т.е. я знаю, что после M будет идти число до двоеточия и т.д.
Но кто предложит через регулярные выражения - буду рад заюзать ;)


Название: Re: Составить регулярное выражение
Отправлено: uriel от Декабрь 10, 2009, 21:49
Просто я Вам написал регулярку, как она есть. А если это нужно запихнуть в код на C++, то следует чуть-чуть её преобразовать: "^(\\S*)\\s*([0-9.]*): (.*)$".