Russian Qt Forum

Qt => Общие вопросы => Тема начата: vmprog от Июнь 29, 2010, 18:55



Название: Помогите разобраться с QRegExp
Отправлено: vmprog от Июнь 29, 2010, 18:55
Есть вот такая строка: QRegExp rx_href("href=\"([^\"]*)\"");
Не могу разобраться как она работает. То, что ищет строку начинающуюся на href=\ это понятно, но вот что дальше мне не понятно:(
Что означают:
([^\"]*)
\""

Спасибо.


Название: Re: Помогите разобраться с QRegExp
Отправлено: SimpleSunny от Июнь 29, 2010, 19:02
\" кавычка экранируется, так как в с++ у нее особое значение
([^\"]*) вывести именно ссылку. Если грубо, то любой текст, который не заканчивается на "


Название: Re: Помогите разобраться с QRegExp
Отправлено: vmprog от Июнь 29, 2010, 19:50
Объясните если не трудно. Что ограничивается круглыми скобками (), а что []?
Как я понимаю \ экранирует символ стоящий справа от этой косой. Те если я вижу \\ значит ищется именно косая черта.


Название: Re: Помогите разобраться с QRegExp
Отправлено: SimpleSunny от Июнь 29, 2010, 20:39
Да, \ экранирует символ справа. \\ - одна черточка, \\\\ - 2 черточки. Так как в regexp у \ тоже свой особый смысл, то для поиска косой черты применяют \\\\.

[] - любой символ из перечисленных в скобках ([0-9],[abc]) или не перечисленных ([^0-9] все символы кроме цифр).

() - используют для группировки элементов и их "захвата".
К примеру необходимо разобрать номер телефона в таком формате 068-4434343
QRegExp r("([0-9]*)-([0-9]*)");
r.indexIn("068-4434343");
r.cap(1); //код оператора
r.cap(2); //сам номер