Romul81
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Abs62 Цитата: В таком варианте не захватывается само имя тега, в результате чего дальнейшей обработки просто не происходит. | Я сейчас с планшета — отвечать не очень удобно, но попробую. Почему не захватывает ся? Все регулярки тестировал на реальных стрингах. Диалект C++. Конечно, qt не имеет многих плюшек, но элементарней синтаксиса уже быть не может. Обратили ли вы внимание, что номер группы, который записывается в переменую linkType изменился на 1? Может, вы тестировали с 2, как раньше? Цитата: Убирание "\\b" из конструкций типа "\\bhref\\b" приводит к тому, что не обрабатываются теги, в которых всё записано без пробелов. | Там везде спереди отбивка с \s, которая обязательна. Если её нет, то это не валидный код. Перед атрибутом всегда есть пробел. А после атрибута я оставил = через \s*, Что тоже выполняет роль отбивки. \b в таком раскладе излишний. Цитата: И я не очень понимаю, что делает "\\2" в "(?!\\2|\\b(?:bres|https?)://|data" | 2-я группа — кавычка, открывающая значение атрибута. Т.е. после открытия кавычки впереди не должно быть такой же кавычки, но может быть другая, одинарная, например, которая уже является частью значения атрибута. Цитата: inlineScriptRe, кстати, тоже надо корректировать, он у меня написан неправильно. | Согласен, в теге могут быть другие атрибуты, исключая src. Регулярка не проблема, позже напишу. Добавлено: Цитата: Неправильно. К тому же, QRegExp в replace() передаётся по константной ссылке. | Я бы удивился, если б было правильно )) Я просто хотел дать понять, что вторая регулярка должна отрабатывать только если первая не нашла совпадения. Как это реализовать программно — я не знаю. Добавлено: З.ы. И ещё, игнорирование пробела перед href может привести к тому, что конструкцией "\\bhref\\b" могут захватываться такие вещи как data-href= , что не есть правильно. | Всего записей: 1326 | Зарегистр. 03-03-2008 | Отправлено: 19:22 12-11-2016 | Исправлено: Romul81, 19:24 12-11-2016 |
|