AZJIO
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору По утилите "ConverterCMD" такой вопрос: есть операторы в батниках, которые встречаются внутри переменных, например "-" или "=" Код: SET TP=%TP:~0,-1% %%var:*23=xyz%% | Суть проблемы составить регулярное выражение, которое удалит вложенные теги уже после формирования подцветки. Если для HTML это не критично, то для BBCode недопустимо. Обратная проверка выявляет глюк, но важно получить результат, а не предупреждение об неверности преобразования. Вот мои два варианта Код: $H16='[0-9A-Fa-f]{6}' $HTML=StringRegExpReplace($HTML, '(?mi)(\[color=#'&$H16&'\].*?)(?!\[/color\])\[color=#'&$H16&'\](.*?)\[/color\](.*?\[/color\])', '$1$2$3') $HTML=StringRegExpReplace($HTML, '(?mi)(<span class="S\d">.*?)(?!</span>)<span class="S\d">(.+?)</span>(.*?</span>)', '$1$2$3') | Но не работает по причине того, что комбинация (?!...) не работает для образца (.*?) (текст.*?)(?!...) - то есть проверка несовпадения должна определятся для конкретного текста видимо. Для примера [тег]34+4[тег]=[/тег]38[/тег] нужно удалить выделенное красным. Может сначала удалить повтор открытия тега, а потом первый из повтора незакрытых тэгов? Иначе многовложенность не поддерживается. Вопрос решён пока так Код: $HTML=StringRegExpReplace($HTML, '(?mi)(\[color=#'&$H16&'\][^\[]*?)\[color=#'&$H16&'\](.+?)\[/color\]', '$1$2') | Unmodified На офсайте есть вариант RecFileListToArray от Melba23. Рекурсивный, но быстрый и достаточное количество параметров поиска, включая исключения. Ещё в шапке есть, здесь, предпоследняя строчка. Зачем же убирать код? Может через некоторое время может понадобился. Любые варианты всегда на пользу. Я просто показал что есть несколько готовых решений, хотя трудны для понимания мне, и как раз с простых вариантов удобнее учится и настраивать под себя.
| Всего записей: 4413 | Зарегистр. 03-05-2006 | Отправлено: 20:13 26-05-2011 | Исправлено: AZJIO, 02:08 27-05-2011 |
|