Название: Регулярные выражения. Матчится только первая комбинация. Отправлено: Gate007 от Апрель 23, 2012, 14:51 Задача: реализовать подсчет числа слов в поле. Есть еще несколько нюансов, но в данном случае они неважны.
Для теста и написания регулярного выражения был использован RegexBuddy, flavor-PERL. Регулярка выглядит следующим образом: Код: \b\w*(\/*\w*\-*\w*)*\w*\b Код: void MainWindow::WordCounterSlot() Есть мысль что индексация происходит не по всему тексту, а только до первого полного совпадения. Задачу постараюсь решить сам, подскажите, почему матчится только первое выражение? Название: Re: Регулярные выражения. Матчится только первая комбинация. Отправлено: kambala от Апрель 23, 2012, 15:41 почитал бы что делает метод indexIn(), что ли... (возвращает первую позицию совпавшей регулярки, всю строку не парсит).
для просмотра всей строки используй Код (это кстати написано в том же описании indexIn()) Название: Re: Регулярные выражения. Матчится только первая комбинация. Отправлено: _OLEGator_ от Апрель 23, 2012, 16:12 только внутри цикла надо к pos прибавить хотя бы 1, а то бесконечный цикл выйдет
Название: Re: Регулярные выражения. Матчится только первая комбинация. Отправлено: kambala от Апрель 23, 2012, 16:21 но лучше как в примере: pos += rx.matchedLength();
|