Название: Составить регулярное выражение Отправлено: 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.]*): (.*)$".
|