|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] StringRegExpReplace: Конверт. строки атрибутов файла в формат Attrib.exe |
|
[решено] StringRegExpReplace: Конверт. строки атрибутов файла в формат Attrib.exe
|
Must AutoIt Сообщения: 3054 |
Профиль | Сайт | Отправить PM | Цитировать Вступление:
И снова Регулярные выражения - я их обожаю (когда нахожу решение), и в то же время ненавижу (когда найти решение не удаётся, как сейчас например )... Задача: Имеем строку следующего вида (это аттрибуты файла для FileSetAttrib): "+RAT-SH" Нужно её преобразовать в такой вид: " +R +A +T -S -H" Т.е по сути нужно найти группу после знака модификации (+ или -), и в этой группе у каждого символа добавить пробел и найдены в начале модификатор. Пробую так: $sStr = "+RAT-SH" $sResult = StringRegExpReplace($sStr, "(\+|-)([RASHNOT]){2,}", "\1\2") ConsoleWrite($sResult & @CRLF) Цель задачи: Позволить юзеру указывать привычный формат строки атрибутов файла (как в FileSetAttrib), но при этом использовать консольную утилиту Attrib, которая использует другой формат (каждый модификатор-атрибут отдельно). P.S Обходные методы и вопросы типа “а зачем использовать консольный Attrib.exe а не FileSetAttrib” не предлагать и не спрашивать, кроме прочего у меня есть спортивный интерес решения поставленной задачи. Спасибо. |
|
------- Отправлено: 01:03, 11-09-2009 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать |
Отправлено: 06:17, 11-09-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата amel27:
Супер! Скажи пожалуйста, мне просто интересно, сколько времени у тебя ушло на построение этого шаблона? Я более двух часов провозился чтобы у меня вышло... да собственно ничего P.S И всё же, что означает ^? И зчем знак вопроса в начале группы а потом ещё и треугольная скобка, и знак равно? Я подобное видел в шаблонах php, но так и не смог понять к чему оно, в манулах тоже смотрел, но толком ничего такого не находил... |
|
------- Отправлено: 06:50, 11-09-2009 | #3 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Creat0R:
|
|
Отправлено: 07:23, 11-09-2009 | #4 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата amel27:
Цитата amel27:
Цитата amel27:
|
||||
------- Отправлено: 15:52, 11-09-2009 | #5 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Creat0R:
1-й подход - это "лобовой" перебор вариантов, причем с обязательной посимвольной детализацией содержимого блока (иначе как потом раскрывать в замене?), т.е придётся описать 7 комбинаций ~28 символьных позиций + метасимволы групп, сохранений и т.д. - перспектива удручающая... 2-й подход интересней, но тут одна проблема - как при обработке очередного символа восстановить результат из обработки прошлых символов?... поискать можно в двух направлениях: А) возможность "глобальных" (меж-атомарных) сохранений ($1 действительна только в пределах блока); или Б) попытаться использовать при обработке символы строки вне обрабатываемого блока. Способ А есть в Perl и соответствует его обычным переменным, т.к. регулярные выражения - его смысловое ядро ("native inborn"), в библиотеке PCRE вроде есть именованные переменные, но описаны слабо и по ходу всё зависит от конечной сборки библиотеки... Короче, эксперименты ни к чему не привели - именованные переменные в AutoIT не работают (пока?). Способ Б и есть та самая позиционная проверка (опережающая и ретроспективная), так хорошо описанная в книге Дж.Фридла – очень мощный приём, некоторые задачи без неё просто нерешаемы. Как уже сказал выше – в ранних реализациях RegExp они не поддерживались, тут представился повод еще раз проверить. Цитата Creat0R:
|
||
Отправлено: 06:23, 12-09-2009 | #6 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Последние сообщения отведены в новую тему Обсуждение FAQ'а (Ча.Во) по регулярным выражениям. А то уже начался сплошной
|
------- Отправлено: 22:52, 14-09-2009 | #7 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - attrib.exe требует вставить диск Device\Harddisc1\DR | Мурена | Microsoft Windows Vista | 0 | 07-10-2009 12:16 | |
[решено] Удаление строки из файла | gregaz | AutoIt | 2 | 16-07-2009 18:46 | |
[решено] Почему stringRegExpReplace удаляет из строки буквы? | Twix1124 | AutoIt | 2 | 07-06-2009 22:28 | |
Изменение атрибутов файла .doc | Di373R | Хочу все знать | 8 | 31-05-2008 23:44 | |
Ошибка - Установка атрибутов файла | kolchoz | Microsoft Windows 2000/XP | 1 | 12-08-2007 08:52 |
|